作为一个初学者,我知道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
答案 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)
由于@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();