[英]How to check if an int contains a letter
我正在嘗試通過錯誤檢查來驗證我的代碼。 我想確保輸入的整數不包含字母或更多。 這是我的代碼。 我應該使用一維數組解決此問題。 我可以使用代碼,但是在添加錯誤檢查時遇到了問題。我們將不勝感激。 謝謝
public void getNumbers() {
Scanner keyboard = new Scanner(System.in);
int array[] = new int[5];
int count = 0;
int entered = 0;
int k = -1;
while (entered < array.length) {
System.out.print("Enter a number ");
int number = keyboard.nextInt();
if (10 <= number && number <= 100) {
boolean containsNumber = false;
entered++;
for (int i = 0; i < count; i++) {
if (number == array[i]) // i Or j
{
containsNumber = true;
}
}
if (!containsNumber) {
array[count] = number;
count++;
} else {
System.out.println(number + " has already been entered");
}
} else {
System.out.println("number must be between 10 and 100");
}
//what does %d do?
for (int j = 0; j < count; j++) {
System.out.printf("%d ", array[j]);
}
System.out.println();
}
}
}
我假設您希望程序在用戶第一次不輸入數字時要求用戶重新輸入數字。 在這種情況下,您可能需要嘗試以下方法:
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number: ");
while(!sc.hasNextInt()) {
//print some error statement
sc.nextLine();
}
int number = sc.nextInt();
System.out.println("Number is: " + number); // to show the value of number
// continue using number however you wish
由於hasNextInt()
返回一個布爾值,確定輸入是否為整數,所以程序將永遠不會離開while循環,直到程序可以確認用戶輸入了整數為止。
如果您輸入String,則keyboard.nextInt()
將引發InputMismatchException
。
如果要檢查Scanner
是否具有要讀取的整數,則可以使用keyboard.hasNextInt()
。
或者,您可以將輸入讀取為String s = keyboard.next()
,它將輸入作為字符串,然后使用s.matches(".*\\\\d+.*")
來確定它是否為整數。
更新:要回答問題keyboard.hasNextInt()
將返回一個布爾值。 因此,例如,在System.out.print("Enter a number")
,您可以使用if
語句檢查keyboard
可以接收數字輸入,即。 if(keyboard.hasNextInt)
。 如果為true,則表示用戶已輸入數字輸入,您可以繼續說int number = keyboard.nextInt()
。 如果為假,則您將知道用戶輸入是非數字的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.