我想从一个ArrayList中的数组中获得一个随机项目
我正处于创建我认为本质上应该是一个简单的小程序的开始阶段。不过,我对java很陌生,所以它被证明比预期更困难。这是我所能编译的,除了最后的打印部分之外。首先,我不明白为什么不呢?其次,我需要创建一个随机生成器,从arrayList中的一个数组中随机选择一个项目。我一直在尝试这么多事情,但却无法实现。我觉得我很困惑,甚至把代码放在哪里。帮帮我!我想从一个ArrayList中的数组中获得一个随机项目
import java.util.*;
public class RestaurantSelector1 {
//public static class Tribeca4star{
final static String[] italian = {"Pepolino Restaurant", "Locanda Verde", "Scalini Fedeli", "Gran Morsi", "Ecco", "Tutto il Giorno", "The Odeon", "Mamo Restaurant", "Petrarca Cucina E Vino", "Osteria Morini"};
final static String[] japanese = {"Shigure", "Sushi Azabu", "Ichimura", "Brushstroke", "Takahachi Tribeca Restaurant", "Ninja New York", "DOMODOMO", "Sushi of Gari", "Hirohisa", "Blue Ribbon"};
final static String[] french = {"Bouley", "Batard", "Racines", "The Odeon", "MAMO Restaurant", "La Sirene", "Le Coucou", "Balthazar", "Taureau", "L'Appart"};
final static String[] american = {"American Cut Steakhouse", "Marc Forgione", "The Bennett", "Little Park", "The Odeon", "Yves", "Tribeca Grill", "Atera", "Batard", "Brandy Library"};
final static String[] chinese = {"Mr. Chow", "Macao", "Khe-Yo"};
final static String[] spanish = {"Tablao", "Sazon", "Despana", "Estancia 460", "Westside Coffee Shop", "Anejo Tribeca", "Terra Wine Bar", "Darlene", "Sophia's Cuban Cuisine", "Amada"};
final static String[] cafe = { "Arcade Bakery", "Galerie de Cafe", "The Wooly Daily", "Cafe Belle", "Baked", "Laughing Man Coffee and Tea","La Colombe Coffee", "Kuro-Obi at Canal Street Market", "Blue Spoon Coffee", "Everyman Espresso"};
final static String[] thai = {"khe-yo", "Empire", "Macao"};
final static String[] indian = {"Tamarind"};
final static String[] viatnamese = {"Khe-Yo", "Macao"};
public static void main(String[] args){
ArrayList<String[]> cuisine = new ArrayList<>();
cuisine.add(italian);
cuisine.add(japanese);
cuisine.add(french);
cuisine.add(american);
cuisine.add(chinese);
cuisine.add(spanish);
cuisine.add(cafe);
cuisine.add(thai);
cuisine.add(indian);
cuisine.add(viatnamese);
System.out.println(cuisine[0,1]);
}
}
尝试System.out.println(cuisine.get(0)[1])
你想用ArrayList.get(int index)
为了找回您的String[]
对象,然后你可以通过创建一个数组内的指向字符串
嗨!我会如何从意大利语中获得随机餐厅?除了最后一行之外,所有的东西都编译完成,我不知道如何获得一种特定类型的美食,然后是一个随机的餐厅。 –
我希望你能够思考,而不仅仅是给出答案,否则你不会学习。 你想要做的就是把它想成多个步骤。 你需要一个随机整数。 你需要你的String []意大利食物, 意大利食物的String []住在你的ArrayList里面。 从ArrayList中获取String [],并从该String []中获取一个随机索引。 如果不是全部在一行中,它可能会更容易。分配每个变量并像那样工作。如果您需要更多帮助,请留言回复 – BaneDad
您可以生成一个随机指数新的随机()实例,并从nextInt
,[0,cuisine.size())
获得随机int的随机语言和[0,cuisine.get(rnd).length)
该语言内的单词
Random rand = new Random(); //RN Generator
int rnd = rand.nextInt(cuisine.size()); //random lang index
int rndWord = rand.nextInt(cuisine.get(rnd).length) //random word index
然后,您可以使用随机索引.get(rnd)
来访问您想要的String [],并获得该数组中的随机条目[rndWord]
。
System.out.print(cuisine.get(rnd)[rndWord]); //print out random word
但是菜系应该是正确的?当我这样做时,说大小不具有公共访问权限? –
确保你在做.size()而不是.size @danaCarlin –
@danaCarlin看到我的编辑从所有集合中获取随机字 –
为了得到一个随机美食随机的餐厅,你可以做到以下几点:
final Random random = new Random();
final String[] randomCuisine = cuisine.get(random.nextInt(cuisine.size()));
final String randomRestaurant = randomCuisine[random.nextInt(randomCuisine.length)];
如果我理解正确的话,你希望得到您的列表中随机String[]
,然后得到一随机输入出String[]
。你可以通过使用java.util.Random
类:
public static String getRandom(List<String[]> list) {
Random random = new Random();
int listAccess = random.nextInt(list.size());
String[] s = list.get(listAccess);
return s[random.nextInt(s.length)];
}
然后,只需将System.out.println(cuisine[0,1]);
与
System.out.println(getRandom(cuisine));
对于你的问题,为什么你的代码不能编译取代,这是因为你必须使用.get(<index>)
为List
和[<index>]
访问数组中的项目。
首先,您的导入语句不会按照书面进行编译。
import java.util.; //will not compile without class name after '.' import java.util.*; //will compile: You could also specify a specific class name in place of the *
作为生成一个随机的餐厅,你可以通过添加如下代码到你的主要方法做到这一点。我已添加了解释说明。
public static void main(String[] args) {
ArrayList<String[]> cuisine = new ArrayList<>();
cuisine.add(italian);
cuisine.add(japanese);
cuisine.add(french);
cuisine.add(american);
cuisine.add(chinese);
cuisine.add(spanish);
cuisine.add(cafe);
cuisine.add(thai);
cuisine.add(indian);
cuisine.add(viatnamese);
Random randomArrayListIndex = new Random();
int randomCuisine = randomArrayListIndex
.nextInt(cuisine.size());
String[] randomArray = cuisine.get(randomCuisine); // get random array
// from ArrayList
Random randomArrayIndex = new Random();
String randomRestaurant = randomArray[randomArrayIndex // get random element
// from array
.nextInt(randomArray.length)];
System.out.println(randomRestaurant);
}
'(randomArray.length - 1) - 0)+ 1'目的是什么这个? –
好的。我写得太快了,并没有完全考虑它......我原本以为我会需要从数组长度减去1或ArrayList的大小,因为该数字不会是有效的索引。 – BNeumann
'randomArrayIndex.nextInt(size)'将自动从'[0,size-1]或[0,size)'中获取下一个int,因为它不包含参数。 :) –
如何从意大利语中获得随机餐厅?除了最后一行之外,所有的东西都编译完成,我不知道如何获得一种特定类型的美食,然后是一个随机的餐厅。
ArrayList<String[]> WestVillageCuisine = new ArrayList<String[]>();
WestVillageCuisine.add(Expensive.WestVillage.italian);
WestVillageCuisine.add(Expensive.WestVillage.japanese);
WestVillageCuisine.add(Expensive.WestVillage.american);
WestVillageCuisine.add(Expensive.WestVillage.chinese);
WestVillageCuisine.add(Expensive.WestVillage.spanish);
WestVillageCuisine.add(Expensive.WestVillage.cafe);
WestVillageCuisine.add(Expensive.WestVillage.thai);
WestVillageCuisine.add(Expensive.WestVillage.indian);
WestVillageCuisine.add(Expensive.WestVillage.viatnamese);
WestVillageCuisine.add(Expensive.WestVillage.greek);
System.out.println(getRandom(WestVillageCuisine));
System.out.println(WestVillageCuisine.get(0).getrandom());
}
请分开“随机挑选的项目”问题的语法错误的问题。 – Arkadiy