2017-08-03 48 views
-1

我正处于创建我认为本质上应该是一个简单的小程序的开始阶段。不过,我对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]); 
    } 
} 
+3

请分开“随机挑选的项目”问题的语法错误的问题。 – Arkadiy

回答

0

尝试System.out.println(cuisine.get(0)[1])

你想用ArrayList.get(int index)为了找回您的String[]对象,然后你可以通过创建一个数组内的指向字符串

+0

嗨!我会如何从意大利语中获得随机餐厅?除了最后一行之外,所有的东西都编译完成,我不知道如何获得一种特定类型的美食,然后是一个随机的餐厅。 –

+0

我希望你能够思考,而不仅仅是给出答案,否则你不会学习。 你想要做的就是把它想成多个步骤。 你需要一个随机整数。 你需要你的String []意大利食物, 意大利食物的String []住在你的ArrayList里面。 从ArrayList中获取String [],并从该String []中获取一个随机索引。 如果不是全部在一行中,它可能会更容易。分配每个变量并像那样工作。如果您需要更多帮助,请留言回复 – BaneDad

1

您可以生成一个随机指数新的随机()实例,并从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 
+0

但是菜系应该是正确的?当我这样做时,说大小不具有公共访问权限? –

+0

确保你在做.size()而不是.size @danaCarlin –

+0

@danaCarlin看到我的编辑从所有集合中获取随机字 –

0

为了得到一个随机美食随机的餐厅,你可以做到以下几点:

final Random random = new Random(); 
final String[] randomCuisine = cuisine.get(random.nextInt(cuisine.size())); 
final String randomRestaurant = randomCuisine[random.nextInt(randomCuisine.length)]; 
0

如果我理解正确的话,你希望得到您的列表中随机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>]访问数组中的项目。

0

首先,您的导入语句不会按照书面进行编译。

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); 
} 
+0

'(randomArray.length - 1) - 0)+ 1'目的是什么这个? –

+0

好的。我写得太快了,并没有完全考虑它......我原本以为我会需要从数组长度减去1或ArrayList的大小,因为该数字不会是有效的索引。 – BNeumann

+0

'randomArrayIndex.nextInt(size)'将自动从'[0,size-1]或[0,size)'中获取下一个int,因为它不包含参数。 :) –

0

如何从意大利语中获得随机餐厅?除了最后一行之外,所有的东西都编译完成,我不知道如何获得一种特定类型的美食,然后是一个随机的餐厅。

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()); 

}

相关问题