2012-12-04 30 views
-1
public static void getVegetableFromUser() 
{ 
String[] veg = SandwichDB.getVegetable(); 
    HashMap<String, String> getMapVegPrice = SandwichDB.getMapVegPrice(); 
    int vegSave = Validator.getInt(Scanner, "Select Vegetables [1, 8]: ", 1, 8); 
    String v = veg[vegSave-1]; 
    sandwich.setVegetables(v); 
} 

好了,所以控制檯打印出陣列/ ArrayList的OutOfBoundsException

===選擇三明治蔬菜===
1紅洋蔥$ 0.10
2橄欖$ 0.10
3泡菜$ 0.10
4生菜$ 0.20
5青椒$ 0.25
6西紅柿$ 0.30
7 ch Eese(伊塞)$ 0.49
8退出蔬菜科
選擇蔬菜[1,8]:

的想法是能夠選擇多種蔬菜,直到我去接8這是退出蔬菜節。我怎麼會這樣做呢?用else if語句?

此外,蔬菜應該是一個數組,而不是一個字符串...喜歡上了這行:String v = veg[vegSave-1]

這裏是我的SandwichDB.app代碼:

public static String[] getVegetableInfo() 
{ 
    ArrayList<String> vegsList = new ArrayList<>(); 

    try (BufferedReader in = 
      new BufferedReader(
      new FileReader("vegetable.txt"))) 
    { 
     String line = in.readLine(); 
     while (line != null) 
     { 
      String[] elems = line.split("~"); 
      vegsList.add(elems[0] + " $" + elems[1]); 
      line = in.readLine(); 
     } 
     vegsList.add("Quit Vegetable Section"); 
    } 
    catch(IOException e) 
    { 
     System.out.println(e); 
     return null; 
    } 
    String[] vegetableInfo = vegsList.toArray(new String[]{}); 
    return vegetableInfo; 
}  
+0

什麼'getVegetable()'恰好返回?它會返回七八個元素嗎? – Makoto

+0

是啊我的壞,我沒有張貼,它返回所有8.我只是具有重複過程中遇到問題,也當我拿起8應該退出的部分,而不是它只是增加了「退出蔬菜節」的三明治。 setVegetable。這是否是否是陳述或? –

+0

你有問題嗎? (你顯然沒有得到一個異常,或者你會提供的堆棧跟蹤並確定發生異常的聲明。) –

回答

1

這將有助於看到代碼的其餘部分,但根據你發佈什麼,我會認爲你所得到的arrayOutOfBoundsException因爲你試圖獲取有關不存在的蔬菜的信息。嘗試添加一個「如果」以8是否正在執行該行之前選擇的檢查:

String v = veg[vegSave-1]; 

也許嘗試:

if(vegSave == 8){ 
    //TODO: Add code that quits vegetable section 
} else { 
    String v = veg[vegSave-1]; 
} 

這樣,如果8選擇程序不嘗試設置字符串v等於蔬菜。

希望這會有所幫助,我也不太清楚究竟你想要的。 (例如,被「也蔬菜假設是一個數組不象在此行字符串V =蔬菜的字符串[vegSave-1]。」問題,或一個語句?)

+0

字符串v = veg [vegSave-1]是的,我想將該行更改爲數組。 v假設是一個數組[]。謝謝我會嘗試寫一個if/else循環 –