2014-04-27 79 views
0

我使用此代碼,出於某種原因,我得到一個沒有這樣的元素異常......沒有這樣的元素異常帶環

numCompanies正在從鍵盤輸入,並呈現出了右和投資組合是一個包含[numCompanies] [4]的數組。

任何人都可以找出原因嗎?

for(int i = 0; i < numCompanies; i++) 
{ 
    System.out.print("Stock #" + (i+1) + ": "); 
    String stockData = kbReader.nextLine(); 
    System.out.print("\n\n hi" + stockData); 
    Scanner stockLine = new Scanner(stockData); 
    for(int j = 0; j < 4; j++) 
    { 
     portfolio[i][j] = stockLine.next(); 
    } 
} 
+2

看起來像'stockData'並不總是必須由空格分隔4子。 –

+0

是的,由於某種原因,nextLine總是跳過庫存#1,並且我創建了另一個掃描器對象,並且修復了問題 – Tdag

回答

1

我沒有測試過這個,但可能stockLine.next();被調用,即使沒有元件剩下。所以也許這可以幫助:

for(int j = 0; j < 4; j++) 
{ 
    if(stockLine.hasNext()) { 
     portfolio[i][j] = stockLine.next(); 
    } 
    else 
    { 
     portfolio[i][j] = 0; // or whatever you want it to be by default 
    } 
} 

這將解決錯誤信息,但不是錯誤。

+3

您應該使用'hasNext()',而不是捕捉到懷疑 – Rogue

+0

您是對的。我修好了它。 – jschlichtholz

0

您將單個字符串傳遞給Scanner對象,但我會說有更好的方法來做到這一點。

如果你想簡單地在輸入的字符串中的每個值,用空格分隔讀取,然後使用split()

String stockData = kbReader.nextLine(); 
String[] data = stockData.split(" "); 
if (data.length != 4) { 
    System.err.println("Bad data value found!"); 
} else { 
    //run your loop 
} 
相關問題