2013-10-27 108 views
0

的這是我由塊發展到獨立的輸入一個代碼(達到空間時):掃描儀僅在閱讀第一組輸入

import java.util.Scanner; 
public class Single { 
    public static void main(String[] args){ 
     Scanner in = new Scanner(System.in); 
     System.out.println("Three Numbers:"); 
     String numbers = in.next(); 
     int length = numbers.length(); 
     System.out.println(length); 
     int sub = length - length; 
     System.out.println(sub); 
     System.out.println(getNumber(numbers, length, sub)); 
     System.out.println(getNumber(numbers, length, sub)); 
     System.out.println(getNumber(numbers, length, sub)); 
    } 
    public static double getNumber(String numbers, int length, int sub){ 
     boolean gotNumber = false; 
     String currentString = null; 
     while (gotNumber == false){ 
      if (numbers.substring(sub, sub + 1) == " "){ 
       sub = sub + 1; 
       gotNumber = true; 
      } else { 
       currentString = currentString + numbers.substring(sub, sub); 
       sub = sub + 1; 
      } 
     } 
     return Double.parseDouble(currentString); 
    } 
} 

然而,只讀取所述第一組的字符串,並忽略其餘。 我該如何解決這個問題?

回答

1

問題在這裏。你應該用這條線

String numbers = in.nextLine(); 

替換該行

String numbers = in.next(); 

,因爲,接下來的()可以讀取輸入只能做到第一space而nextLine()可直到newline字符讀取輸入。欲瞭解更多信息,請查詢this link

0

如果我理解正確的問題,你只調用一次in.next()。如果你想讓它一遍又一遍地處理輸入,你需要一個循環,直到你沒有更多的輸入。

while (in.hasNext()) { 
    //do number processing in here 
} 

希望這有助於!