2012-12-06 46 views
0

我的輸入看起來像這樣。假設我試圖在打印出大量文本行後拉兩個數字。如何解析字符串中的int? (Java)

abcdef 
abcdef 
abcdef 
abcdef 
123 456 

這裏是我想要使用的僞代碼。

input.useDelimiter(" "); //I've tried a lot of patterns to no avail. 
while(!input.hasNextInt()){ 
    System.out.println(input.next()); 
} 
System.out.println("Found Ints"); 
int posRow = input.nextInt(); 
System.out.println("posRow: "+posRow); 
int posCol = input.nextInt(); 
System.out.println("posCol: "+posCol); 

我的輸出最終成爲

abcdef 
abcdef 
abcdef 
abcdef 
123 
Found Ints 
posRow: 456 
NoSuchElementException 

所以我假設的問題是,它的閱讀文本的最後一行的第一個數字爲一個塊,而不是一個整數,因爲有ISN」一個空間。我嘗試過使用\ r \ n \ r \ n等,似乎無法弄清楚這一點。

感謝您的幫助!

+0

指定語言(java,C++,...) – S3ddi9

+0

對不起,它是java! – user1078174

回答

0

我會用hasNextLine()而不是hasNextInt,如果數字總是最後一行,可以分開分割。

這個怎麼樣?

input.useDelimiter(" "); 
while(input.hasNextLine()){ 
    System.out.println(input.nextLine()) 
} 
System.out.println("Found Ints"); 
int posRow = input.nextInt(); 
System.out.println("posRow: "+posRow); 
int posCol = input.nextInt(); 
System.out.println("posCol: "+posCol); 
0

嘗試......

input.useDelimiter(Pattern.compile("\\s|\\n")); 

這將使用空格或新行作爲分隔符。

問題是使用分隔符的空格會導致所有第一行到數字之間的空格爲一個被評估的項目。這不是一個整數。然後下一個是,但那麼你的最終nextInt沒有更多,因此是例外。