2014-03-02 13 views
-1

真的很困惑這個。 如何爲答案爲數字的零件添加異常處理? 不知道在哪裏添加try和catch。如何爲答案爲數字的零件添加異常處理?

do { 
//zip code  
    do { 
      System.out.println("Enter your zip code(or enter 0 to quit): "); 
      zip = input.nextInt(); 
     } while ((zip > 99999 || zip < 10000) && zip != 0); 
     if (zip == 0){ 
      break; 
        } 
        //age 
    do { 
      System.out.println("Enter your age: "); 
      age = input.nextInt(); 
    } while (age < 10 || age > 110); 


        //items 
    do { 
      System.out.println("Enter number of items : "); 
      numItems = input.nextInt(); 
      entries = entries + 1; 
      if (entries == 3 && numItems < 1) { 
       System.out.println("Invalid. Order was not counted"); 
          break; 
      } 
+0

的http:// docs.oracle.com/javase/tutorial/essential/exceptions/ –

+2

我對你的問題感到困惑:你究竟想做什麼? – donfuxx

+0

我想這樣如果我輸入一個字母而不是一個整數,程序不會崩潰。我相信我需要一個嘗試,並與不匹配的異常趕上 – user3344218

回答

1

粗的方式循環,直到輸入一個有效的數字,是要求一個字符串,嘗試將其轉換爲數字,並保持這樣做,直到這個轉換不會失敗

import java.util.Scanner; 
/** 
    <P>{@code java StringToNumberWithTesting}</P> 
**/ 
public class StringToNumberWithTesting { 
    public static final void main(String[] ignored) { 

     int num = -1; 

     do { 
     nfx2 = null; 
     System.out.print("Number please: "); 
     String strInput = (new Scanner(System.in)).next(); 
     try { 
      num = Integer.parseInt(strInput); 
     } catch(NumberFormatException nfx) { 
      nfx2 = nfx; 
      System.out.println(strInput + " is not a number. Try again."); 
     } 
     } while(nfx2 != null); 

     System.out.println("Number: " + num); 
    } 
} 

輸出:

[C:\java_code\]java StringToNumberWithErrLoop 
Number please: etuh 
etuh is not a number. Try again. 
Number please: 2 
Number: 2 

但是用不存在異常作爲替代邏輯是內華達州呃在真實世界的應用程序中一個好主意。更好的方法是,以確認字符串包含一個數字,您可以使用共享NumberUtils.isNumber(s)

import java.util.Scanner; 
    import org.apache.commons.lang.math.NumberUtils; 
/** 
    <P>{@code java StringToNumberWithTesting}</P> 
    **/ 
public class StringToNumberWithTesting { 
    public static final void main(String[] ignored) { 

     int num = -1; 
     boolean isNum = false; 

     do { 
      System.out.print("Number please: "); 
      String strInput = (new Scanner(System.in)).next(); 
      if(!NumberUtils.isNumber(strInput)) { 
      System.out.println(strInput + " is not a number. Try again."); 
      } else { 
      //Safe to convert 
      num = Integer.parseInt(strInput); 
      isNum = true; 
      } 
     } while(!isNum); 

     System.out.println("Number: " + num); 
    } 
} 

輸出:

[C:\java_code\]java StringToNumberWithTesting 
Number please: uthoeut 
uthoeut is not a number. Try again. 
Number please: 3 
Number: 3 

一些詳細信息:How to check if a String is numeric in Java

+0

酷感謝很多 – user3344218

+0

不客氣。 – aliteralmind

+0

如果您認爲這有助於您,請考慮進行投票並將其視爲您的答案。祝你好運。 – aliteralmind