2013-12-08 56 views
0

我試圖解決3n + 1問題,並得到非常接近。我想這裏發生的是答案應該一次接受多行輸入,不應該要求用戶再次輸入。我在hasNextLong()條件的循環中嘗試了nextLine()方法,但問題是無論何時找不到更長的類型,它都會要求用戶提供另一個輸入,而不是打破循環。無論用戶輸入多少行,是否有任何方法可確保僅輸入一次輸入?如何接受多行輸入一次,並確保用戶不再要求輸入

如果輸入字符串,循環會中斷。當只有第一個輸入沒有更多的長變量需要處理時,我想要做的就是打破。

import java.util.Scanner; 
import java.io.*; 

public class te{ 
    public static void main(String[] args){ 
    Scanner key=new Scanner (new BufferedInputStream(System.in)); 
    String s=""; 
    while(key.hasNextInt()){ 
     System.out.println("Entered loop"); 
     s=s+""+key.nextLong(); 
    } 
    System.out.println(s); 
    } 
} 
+0

@peeskillet,他可能是指這個問題: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid= 8&page = show_problem&problem = 36 – merlin2011

+1

請詳細說明「當只有第一個輸入沒有更多長變量需要處理時打破。」 – merlin2011

+0

實際上我的意思是... hasNextLong()只要找到任何...,它就不會處理長變量,並且當它找不到時,它會要求用戶提供另一個輸入...現在我想要的而不是詢問用戶我想循環被打破在這一點上 – user3079178

回答

0

不是100%肯定你想要什麼來完成,但要回答這個問題:

」 ..whenever它沒有找到任何更長遠的類型,它要求用戶給出另一個輸入而不是打破循環。「

我剛使用了一個try/catch塊。如果輸入不是數字,它會打破循環。您可以繼續輸入數字並按回車,如果輸入不是數字,循環將會break;,它會打印出連接的數字。

import java.util.Scanner; 

public class StackOverflow { 

    public static void main(String[] args){ 

     Scanner scanner = new Scanner(System.in); 

     String s = ""; 
     System.out.println("Enter Numbers: "); 

     while (true) { 
      try { 
       s += String.valueOf(scanner.nextInt()); // if input is not an int 
      } catch (Exception ex) {      // it will throw exception 
       break; 
      } 
     } 
     System.out.println(s); 
    } 
} 

編輯:掃描線

Scanner input = Scanner(System.in); 

System.out.printline("Enter some numbers: "); 

String line = scanner.nextLine(); 
Scanner lineScanner = new Scanner(line); 

while (lineScanner.hasNextLong()){ 
    long num = lineScanner.nextLong(); 
    // do something with num 
} 
+0

謝謝,但我已經嘗試過這些東西...像打破循環時給出空白條目或字符串被給予...但我認爲uva在線評委推薦的代碼是一次拍攝多行輸入並打印結果。所以我不得不打破爲我輸入輸入的循環......一旦用戶輸入了......以確保我的代碼不會再輸入任何內容。 – user3079178

+0

也許你想發佈完整的說明(verbatum),如果它不是太長。至少有關的部分。 –

+0

Scanner dd = new Scanner(new BufferedInputStream(System.in)); (dd.hasNextLong())cas [0] [aa] = dd.nextLong(); cas [1] [aa] = dd.nextLong(); result [aa] = check(cas [0] [aa],cas [1] [aa]); aa ++; } 我想這個循環能夠只採取一個輸入和中斷,而不是向用戶詢問另一個 – user3079178