2015-05-09 42 views
1

我與Java初學者,我有以下代碼:初學Java程序

public class test 
{ 
    public static void main(String[] args) 
    { 
     int a ; 
     String b; 

     Scanner input = new Scanner(System.in); 
     try { 

     System.out.println("Enter a: "); 
     a = input.nextInt(); 

    } catch(Exception e) 
    { 
     System.out.println("That is not a number!"); 
    } 

     System.out.println("Enter your name: "); 
     b = input.next(); 
     System.out.println("Hello " + b); 

    } 
} 

當我給一個字符串,而不是INT的代碼執行和進一步,我收到這樣的結果:

"Enter a: 
fsd 
That is not a number! 
Enter your name: 
Hello fsd" 

如何在捕獲後進行中斷? (我已經嘗試過一個新的掃描儀後捕捉,但我認爲還有另一種方法) 在此先感謝! LE:我設法用「input.next();」來做到這一點。實際上,我想給字符串b提供另一個值,但程序自動獲取int a而不是新值,並打印出「Hello vsd」,儘管vsd是a的輸入。

+4

你的中斷是什麼意思? – aditsu

+1

你能澄清一下你的問題嗎? – Blip

+0

你想做什麼? – Prashant

回答

1

試試這個

public class Test{ 
public static void main(String[] args){ 
    int a ; 
    String b; 
    Scanner input = new Scanner(System.in); 
    try { 

    System.out.println("Enter a: "); 
     a = input.nextInt(); 
    System.out.println("Enter your name: "); 
     b = input.next(); 
    System.out.println("Hello " + b); 

    } 
    catch(Exception e){ 
    System.out.println("That is not a number!"); 
    } 
} 
} 
2

如前所述由the documentation,該Scanner不會前進到下一個標記,如果當前的令牌不匹配整數的格式。因此,如果沒有拋出異常,令牌不會被使用,並且您在下一次調用nextXYZ方法時纔會獲取它。

將輸入的下一個標記掃描爲int。如果下一個標記無法轉換爲有效的int值,則此方法將拋出InputMismatchException,如下所述。如果翻譯成功,則掃描儀前進超過匹配的輸入。

而是拋出和捕獲異常(這是一項繁重的操作),你可以使用hasNextInt()檢查它提前:

int a ; 
String b; 

Scanner input = new Scanner(System.in); 
System.out.println("Enter a: "); 
if (input.hasNextInt()) { 
    a = input.nextInt(); 
} else { 
    System.out.println("That is not a number!"); 
    // Skip the token so you won't get it later: 
    input.nextLine(); 
} 

System.out.println("Enter your name: "); 
b = input.next(); 
System.out.println("Hello " + b); 
0

只需修改catch塊如下:

catch(Exception e) 
    { 
     System.out.println("That is not a number!"); 
     System.exit(0); 
    } 
+0

有了這段代碼,程序不會進一步發展,我不能提示第二個值(名稱)。不管怎麼說,還是要謝謝你 – raz

0

您應該嘗試使用以下塊

input.hasNextInt() 

,因爲它不需要你使用catch或throw異常,而是if和else語句。

你的代碼仍然進行,因爲catch塊只是捕捉異常,並用的System.out.println,打印替換它「這不是一個數字!」

} catch(Exception e) 
{ 
    System.out.println("That is not a number!"); 
} 

在這樣的代碼繼續

System.out.println("Enter your name: "); 
b = input.next(); 
System.out.println("Hello " + b);