粗的方式循環,直到輸入一個有效的數字,是要求一個字符串,嘗試將其轉換爲數字,並保持這樣做,直到這個轉換不會失敗:
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
的http:// docs.oracle.com/javase/tutorial/essential/exceptions/ –
我對你的問題感到困惑:你究竟想做什麼? – donfuxx
我想這樣如果我輸入一個字母而不是一個整數,程序不會崩潰。我相信我需要一個嘗試,並與不匹配的異常趕上 – user3344218