有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

验证用户输入的整数时,无法转换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.");
        }
    }
}

共 (2) 个答案

  1. # 1 楼答案

    这里的问题是,当你调用Integer.parseInt(number)时,你试图解析变量number,它是一个int而不是一个String。这意味着您正在对从intInteger的转换进行错误检查,而不是从StringInteger的转换

    要解决这个问题,请输入一个字符串而不是数字,然后对字符串而不是数字执行转换

    ...
    
    public static void main(String[] args) {
        int myNumber;
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a postitive integer: ");
        String numberString = input.nextLine();
        try {
            myNumber = Integer.parseInt(number);
            System.out.println("Value entered is " + myNumber);
    
            // do what you want with the number
    
        } catch (NumberFormatException e) {
            System.out.println(numberString + " is not an integer.");
        }
    }
    
    ...
    
  2. # 2 楼答案

    您不需要显式地将数字转换为整数,Scanner.nextInt()已经为您这样做了,即Scanner.nextInt()将输入的下一个标记扫描为int。所以只需从代码中删除“int number = input.nextInt();”行。一般来说,当您想要将Integer值的String表示形式转换为带符号的十进制整数时,Integer.parseInt()更可取。例如,如果使用Scanner.nextLine()而不是Scanner.nextInt(),那么如果希望使用该整数值执行后续操作,则将其转换为带符号十进制整数更有意义