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

Java 无法使用parseInt()将字符串转换为整数,java,numberformatexception,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); } 我想将一行作为输入,并将其转换为整数并打

作为初学者,我知道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

并非所有字符串都可以转换为整数。 例如,应如何将
“xyz”
转换为整数?根本没有办法。Java使用
numberformatException
通知程序员这种情况。我们程序员应该正确处理这种异常

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

Scanner.nextInt()
将为无效输入引发不同的异常(
InputMismatchException
)。在处理无法转换为int的输入方面没有任何变化。

您的代码是正确的,工作正常

确保您输入的数字在整数[-21474836482147483647]的范围内,如果该数字超出范围,则它也会引发NumberFormatException

尽管这样做的首选方法是使用sr.nextInt()


但是,您所做的工作也有效,只需确保您输入的数字实际上是int。

使用try-and-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 );
    }

}

你应该使用
sr.nextInt()
。如果你打算循环整个东西,你应该在
sr.nextLine()
之后立即使用
sr.nextLine()
。否则你按下的回车键将作为输入,导致不可预测的输出。

  • 您使用的数字行可能包含空格(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();
        }
    

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();

使用
sr.nextInt()
insteadPublic应为public尝试此操作并再次询问您是否正在尝试将字符串转换为asc整数值?您是否正在尝试将字符串转换为整数或将存储在字符串s中的整数转换为整数?请告诉meI怀疑关键字是“整数”“。您一次只能解析一个整数。Ketan我正在尝试打印存储在字符串中的值。例如,我将字符串堆栈溢出作为输入,并希望打印存储在字符串中的整数值