2014-10-28 69 views
0

貝婁,你可以看到我有麻煩的代碼部分。到目前爲止,當用戶輸入「a」時,程序返回一個錯誤。我希望程序返回「錯誤輸入再試一次!」並返回到開始od do statment。當用戶輸入字符串程序返回到循環的開始時,當整數程序繼續

do{ 
    System.out.println("Vnesi dožino besede, ki jo iščeš"); 
    Scanner in = new Scanner(System.in); 
    dolzina = in.nextInt(); 
     }while (dolzina<0); 
+0

爲什麼dolzina值你想重複循環。你遇到了什麼錯誤。請更清楚一點 – Chiseled 2014-10-28 20:36:52

+1

在調用'nextInt()之前使用'hasNextInt()'' – 2014-10-28 20:37:14

回答

0

如果我理解你,你可以在你嘗試閱讀之前檢查Scanner.hasNextInt()。而且,您應該聲明Scanner一次。類似的,

int dolzina = -1; 
Scanner in = new Scanner(System.in); 
do { 
    System.out.println("Vnesi dožino besede, ki jo iščeš"); 
    if (in.hasNextInt()) { 
     dolzina = in.nextInt(); 
    } else if (in.hasNextLine()) { 
     System.out.printf("Wrong entry (%s) try again!%n", 
       in.nextLine()); 
    } else { 
     System.out.println("No Entry!"); 
     System.exit(1); 
    } 
} while (dolzina < 0); 
+0

感謝設法使它工作 – 2014-10-28 20:55:53

0
Scanner in = new Scanner(System.in); 
do{ 
    System.out.println("Vnesi dožino besede, ki jo iščeš"); 
    try { 
     dolzina = in.nextInt(); 
    } catch (InputMismatchException e) { 
     dolzina = -1; 
     System.err.println("Wrong entry, try again"); 
    } 
} while (dolzina<0); 

這將捕獲該異常,當它需要int,並得到別的掃描器拋出。當發生這種情況時,它會在dolzina中輸入一個負數,在你的循環條件下,它將導致它重做循環。

掃描儀應在外部打開

+0

hmm無限循環 – 2014-10-28 20:47:53

0

嘗試檢查int是否與in.hasNextInt()一起傳遞。

if (in.hasNextInt()) { 
     dolzina = in.nextInt(); 
    } 
相關問題