无法使用parseInt()将字符串转换为整数

时间:2016-10-14 04:40:53

标签: java numberformatexception

作为一个初学者,我知道Integer.parseInt()用于将字符串转换为整数但在这里我尝试了一个程序,但它没有工作

Public static void main(String args[])
{

    Scanner sr=new Scanner(System.in);
    String s=sr.nextLine();
    int i=Integer.parseInt(s);
    System.out.println(i);

}

我想将一行作为输入并将其转换为整数并打印,但在执行时会显示NumberFormatException

6 个答案:

答案 0 :(得分:1)

并非所有字符串都可以转换为整数。

例如,如何将"xyz"转换为整数?根本没办法。 Java用NumberFormatExcpetion通知程序员这种情况。我们程序员应该正确处理这种异常。

try {
    Integer.parseInt(s);
} catch (NumberFormatException e) {
    // s cannot be converted to int, do sth.
    e.printStackTrace();
}

Scanner.nextInt()会为无效输入抛出不同的异常(InputMismatchException)。在处理无法转换为int的输入方面没有任何改变。

答案 1 :(得分:0)

您的代码是正确无误的。

确保您输入的数字在整数[-2147483648,2147483647]的限制范围内,就像数字超出范围一样,它也会抛出NumberFormatException。

虽然优先使用sr.nextInt();

但是你所做的也只是确保你输入的数字实际上是int。

答案 2 :(得分:0)

使用try和catch块。如果你给字符串代替整数,它将打印“请输入一个数字而不是字符串。下面给出了代码

Public static void main(String args[])
{

    Scanner sr=new Scanner(System.in);
    String s=sr.nextLine();
    try{
    int i=Integer.parseInt(s);
    }catch(Exception e){
    System.out.println(Please enter a number not string );
    }

}

答案 3 :(得分:0)

  • 您使用的是一行可能包含空格的数字(449 003),所以 它可能会导致异常。
  • 因此,您可以在将空格分析为整数之前删除空格。
  • 由于@luke lee提到字母和特殊字符不能 转换为整数,所以使用try catch块来处理它们 异常。

    try{
            Scanner sr=new Scanner(System.in);
            String s=sr.nextLine().replaceAll("\\s+", "");
            int i=Integer.parseInt(s);
            System.out.println(i);
        }catch (NumberFormatException e) {
            e.printStackTrace();
        }
    

答案 4 :(得分:-1)

您应该使用sr.nextInt()。如果您计划循环使用的东西,则应在sr.nextLine()之后立即使用sr.nextInt()。否则,您按下的输入键将被视为输入,从而导致不可预测的输出。

答案 5 :(得分:-1)

1.使用Integer.parseInt()

进行转换

语法

public static int parseInt(String s) throws NumberFormatException

参数s将转换为原始int值。请注意,如果参数不是有效的int,则该方法将抛出NumberFormatException。

示例

String numberAsString = "1234";
int number = Integer.parseInt(numberAsString);
System.out.println("The number is: " + number);

2.使用Integer.valueOf()

进行转换

示例

String numberAsString = "1234";
Integer intObject = new Integer(numberAsString);
int number = intObject.intValue();

你可以缩短为:

String numberAsString = "1234";
int number = new Integer(numberAsString).intValue();

或只是:

int number = new Integer("1234").intValue();