Java 无法使用parseInt()将字符串转换为整数
作为初学者,我知道Integer.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); } 我想将一行作为输入,并将其转换为整数并打
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(); }
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我正在尝试打印存储在字符串中的值。例如,我将字符串堆栈溢出作为输入,并希望打印存储在字符串中的整数值