2017-08-03 51 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()); 

}

相關問題