提问人:Rachit Srivastava 提问时间:8/27/2023 最后编辑:Miss SkooterRachit Srivastava 更新时间:8/27/2023 访问量:74
如何检查输入的值是否为整数?如果是,则仅执行代码的其余部分
how do i Check if the Entered Value is a Integer? and if it is, Then only rest of the Code gets Executed
问:
import java.util.*;
public class MainClass {
public static void main(String[] args) {
System.out.println("Enter the Number you want the Maximum times the Pattern to Print while Increasing 1 each Time :");
boolean isInteger = true;
do {
Scanner Obj = new Scanner(System.in);
int a = Obj.nextInt();
// The Condition I want is to check if INPUT 'a' has a integer value and execute rest of the code on the condition.
if (a.hasNextInt()) {
int i;
for (i = 1; i <= a; i++) {
int j;
for (j = 1; j <= i; j++) {
System.out.println("a");
}
System.out.println();
}
} else {
System.out.println("Please Enter a Integer Value : ");
isInteger = false;
}
} while (isInteger == false);
}
}
上述代码的预期输出:
*
**
***
****
模式类型多次,然后我想通过接受用户输入来做到这一点。如果用户输入是 Integer,则仅执行其余代码,否则应打印并要求用户输入另一个输入。我是 Java 新手。"Please Enter a Integer Value : "
如何检查输入的值是否为整数?
答:
0赞
Jagdeesh
8/27/2023
#1
使用 next() 而不是 nextInt() 并检查值是字符串还是数字以避免默认情况下出错。 像这样尝试
System.out.println("Enter the Number you want the Maximum times the Pattern to Print while Increasing 1 each Time :\n");
boolean isInteger = true;
do {
Scanner Obj = new Scanner(System.in);
String userInput = Obj.next();
int number = 0;
try {
number = Integer.parseInt(userInput);
isInteger = true;
} catch(Exception e) {
isInteger = false;
}
if(isInteger) {
int i, j;
for (i = 1; i <= number; i++) {
for (j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
} else {
System.out.println("Please Enter a Integer Value - " + userInput);
}
} while (isInteger == false);
评论
0赞
tgdavies
8/27/2023
你的 catch 子句正在捕获所有异常,而不仅仅是 ,这将掩盖块中的其他错误。NumberFormatException
try
0赞
Reilas
8/27/2023
#2
“如何检查输入的值是否为整数?如果是,那么只有代码的其余部分被执行......”
典型的建议是使用 Integer#parseInt 方法。
此方法将为非数字值引发 NumberFormatException,因此您可以使用 try-catch 块。
Scanner Obj = new Scanner(System.in);
String a = Obj.next();
try {
int value = Integer.parseInt(a);
} catch (NumberFormatException exception) {
}
以下是有关此方法的相关 StackOverflow 问题和答案。
StackOverflow – 在 Java 中检查 String 是否代表整数的最佳方法是什么?
如果只检查整数,则可以在 a 上使用 String#chars 方法。
不过,Character#isDigit 方法将返回 true。'0'
'9'
isInteger = a.chars().allMatch(Character::isDigit);
或者,也可以使用 String#matches 方法。
这使用正则表达式模式作为 String 参数。
if (a.matches("\\d+"))
"...它应该打印
“Please Enter a Integer Value : ”
并要求用户输入另一个输入。..."
在这种情况下,start isInteger 为 false,并从另一个 if 块将其设置为 true。
"...上述代码的预期输出:
* ** *** ****
for (j = 1; j <= i; j++) {
System.out.print('*');
}
System.out.println();
这是完整的代码,
System.out.println("Enter the Number you want the Maximum times the Pattern to Print while Increasing 1 each Time :");
boolean isInteger = false;
do {
Scanner Obj = new Scanner(System.in);
String a = Obj.next();
// The Condition I want is to check if INPUT 'a' has a integer value and execute rest of the code on the condition.
if (a.matches("\\d+")) {
int i, length = Integer.parseInt(a);
for (i = 1; i <= length; i++) {
int j;
for (j = 1; j <= i; j++) {
System.out.print('*');
}
System.out.println();
}
isInteger = true;
} else {
System.out.println("Please Enter a Integer Value : ");
}
} while (isInteger == false);
输出
Enter the Number you want the Maximum times the Pattern to Print while Increasing 1 each Time :
4
*
**
***
****
这是我编写相同代码的方法。
Scanner scanner = new Scanner(System.in);
String string;
int value, count;
boolean exit = false;
while (!exit) {
string = scanner.nextLine();
if (!string.matches("\\d+"))
System.out.printf("invalid entry '%s'%n", string);
else {
value = Integer.parseInt(string);
for (count = 1; count <= value; count++)
System.out.println("*".repeat(count));
exit = true;
}
}
评论
a