2011-11-13 220 views
1
(Scanner Input=new Scanner(System.in)) 

循環我在我的程序while循環與Input.hasNext()條件。 我想讀取掃描線沒有Input.nextLine();,因爲我想讀一個行後使用該行中的字符串和整數與.next() & .nextInt(),我怎麼能打破while循環,或者我怎麼能打破在進入while循環換行符?停止使用hasNext()條件

while (Input.hasNext()) { 
    if (Input.hasNextFloat()) { 
     Grade=Input.nextFloat(); 
     P.setGrades(Grade); 
     j=0;k=1; 
     continue; 
    } 
    if (k==1) { 
     P.getGPA(); 
     P=new Person(); 
     k=0; 
    } 
    if (j==1) { 
     P.setLastName(Input.next()); 
     continue; 
    } 
    P.setFirstName(Input.next()); 
    i++; 
    j=1; 
} 

回答

0

,如果你只想要1線讀取1行,然後解析線

String line = Input.nextLine(); 
Scanner lineScanner = new Scanner(line);//Scanner can also work on a String instead of a InputStream 
while(lineScanner .hasNext()){ 
    if(lineScanner .hasNextFloat()){ 
     Grade=lineScanner .nextFloat(); 
     P.setGrades(Grade); 
     j=0;k=1; 
     continue;} 
    if(k==1){ 
     P.getGPA(); 
     P=new Person(); 
     k=0;} 
    if(j==1){ 
     P.setLastName(lineScanner .next()); 
     continue;} 
    P.setFirstName(lineScanner .next()); 
    i++; 
    j=1; 
} 
+0

嘿謝謝,它的工作 –

0

測試您想要的條件並使用break來結束循環。

編輯:

基於您的評論,我會說,你不能在循環測試中使用掃描儀。它只是作爲空白區域跳過換行符,並等待其他內容。相反,將System.in包裝在BufferedReader中,並使用readLine來獲取下一個用戶行。如果這條線是空的(零長度),那麼你可以跳出循環;否則,您可以將行包裝在掃描儀中,以使用掃描儀對該行的解析方法。

+0

其達到用戶,我不能使用break.i想要一種方法來使輸入換行符的假Input.hasNext()條件 –

+0

@wilson - 請參閱我的編輯。 –

0

這個怎麼樣?

boolean b=true; 
while (Input.hasNext() && b) { 
    if (Input.hasNextFloat()) { 
     Grade=Input.nextFloat(); 
     P.setGrades(Grade); 
     j=0;k=1; 
    } else { 
     String content=Input.next(); 
     if (content.equals("")) { 
      b=false; 
     } else { 
      if (k==1) { 
       P.getGPA(); 
       P=new Person(); 
       k=0; 
      } 
      if (j==1) { 
       P.setLastName(content); 
       continue; 
      } 
      P.setFirstName(content); 
      i++; 
      j=1; 
     } 
    } 
} 

我真的不使用掃描儀類的,但我相信未來()如果輸入換行符返回一個空字符串。

0

如果你想退出的話,放回去;或者如果你想要進入循環 的下一次迭代,請繼續;