验证用户输入的整数时,无法转换java类型
我试图验证用户的输入,并检查输入的数字是否为整数。如果数字不是整数,我想给他们一条错误信息。我被困在电话里了Integer.parseInt(number);
任何建议都将不胜感激
import java.util.Scanner;
public class Sums {
public static int number;
public static void main(String[] args) {
int evenSum, oddSum = 0;
int posInt;
Scanner input = new Scanner(System.in);
System.out.println("Enter a postitive integer: ");
int number = input.nextInt();
try {
Integer.parseInt(number);
System.out.println("Value entered is " + number);
} catch (NumberFormatException e) {
System.out.println(number + " is not an integer.");
}
}
}
# 1 楼答案
这里的问题是,当你调用
Integer.parseInt(number)
时,你试图解析变量number
,它是一个int
而不是一个String
。这意味着您正在对从int
到Integer
的转换进行错误检查,而不是从String
到Integer
的转换要解决这个问题,请输入一个字符串而不是数字,然后对字符串而不是数字执行转换
# 2 楼答案
您不需要显式地将数字转换为整数,
Scanner.nextInt()
已经为您这样做了,即Scanner.nextInt()
将输入的下一个标记扫描为int
。所以只需从代码中删除“int number = input.nextInt();
”行。一般来说,当您想要将Integer
值的String
表示形式转换为带符号的十进制整数时,Integer.parseInt()
更可取。例如,如果使用Scanner.nextLine()
而不是Scanner.nextInt()
,那么如果希望使用该整数值执行后续操作,则将其转换为带符号十进制整数更有意义