在线工具 在线编程 在线白板 在线工具 在线编程 在线白板

java菜鸟问题报错:Exception in thread "main" java.lang.NumberFormatException: For input

import java.util.*;
public class Jisuanqi{
public static void main(String args[]){
System.out.println("请选择计算类型:1-加法;2-减法;3-乘法;4-除法");
Scanner reader=new Scanner(System.in);
reader.hasNextInt();
int Operator=reader.nextInt();
String Num;
switch(Operator){
case 1:
System.out.println("请输入算式:");
Num=reader.nextLine();
String[] Numa=Num.split("\\+");
int a1,a2;
a1=Integer.parseInt(Numa[0]);
a2=Integer.parseInt(Numa[1]);
int resultsa=a1+a2;
System.out.println("结果是:"+resultsa);
break;
case 2:
System.out.println("请输入算式:");
Num=reader.nextLine();
String[] Numb=Num.split("-");
int b1,b2;
b1=Integer.parseInt(Numb[0]);
b2=Integer.parseInt(Numb[1]);
int resultsb=b1+b2;
System.out.println("结果是:"+resultsb);
break;
case 3:
System.out.println("请输入算式:");
Num=reader.nextLine();
String[] Numc=Num.split("\\*");
int c1,c2;
c1=Integer.parseInt(Numc[0]);
c2=Integer.parseInt(Numc[1]);
int resultsc=c1+c2;
System.out.println("结果是:"+resultsc);
break;
case 4:
System.out.println("请输入算式:");
Num=reader.nextLine();
String[] Numd=Num.split("///");
if(Numd[1].equals(0)){
System.out.println("除数为零,除法不能进行!!");}
else{ int d1,d2;
d1=Integer.parseInt(Numd[0]);
d2=Integer.parseInt(Numd[1]);
int resultsd=d1+d2;
System.out.println("结果是:"+resultsd);}
break;
}
}
}
最新回答
一澜冬雪

2025-03-28 00:36:37

你可能输入了空格,而且在使用num.split()方法时没有去掉空格这样导致分成的数组里面依旧有空格,这样的话在使用integer去封包的时候是不行的,因为待格式化的String变量不符合条件。
解决办法:num.trim().split()。trim()函数是去掉字符串里面的空格功能。这样避免无意义的数据输入。
追问
嗯。好像是这样的,那么直接把num.split()改为num.trim().split()就可以了吗?谢谢
追答
也是可以的,前提是num这个变量不能为null,其实这些全部都是编程习惯,写的多了,时间久了也就慢慢自己养成了。
这里你主要遇到的问题就是在调用一个对象的方法的时候必须要先确保这个对象是实例化的,否则不仅会暴数据格式不匹配的异常还会报空指针异常之类的。
只想待在家

2025-03-28 03:12:34

import java.util.*;
public class Jisuanqi{
public static void main(String args[]){
System.out.println("请选择计算类型:1-加法;2-减法;3-乘法;4-除法");
Scanner reader=new Scanner(System.in);
reader.hasNextInt();
int Operator=reader.nextInt();
String Num;
switch(Operator){
case 1:
System.out.println("请输入算式:");
Scanner reader1=new Scanner(System.in);
Num=reader1.nextLine();
String[] Numa=Num.split("\\+");
int a1,a2;
a1=Integer.parseInt(Numa[0]);
a2=Integer.parseInt(Numa[1]);
int resultsa=a1+a2;
System.out.println("结果是:"+resultsa);
break;
case 2:
System.out.println("请输入算式:");
Scanner reader2=new Scanner(System.in);
Num=reader2.nextLine();
String[] Numb=Num.split("-");
int b1,b2;
b1=Integer.parseInt(Numb[0]);
b2=Integer.parseInt(Numb[1]);
int resultsb=b1-b2;
System.out.println("结果是:"+resultsb);
break;
case 3:
System.out.println("请输入算式:");
Scanner reader3=new Scanner(System.in);
Num=reader3.nextLine();
String[] Numc=Num.split("\\*");
int c1,c2;
c1=Integer.parseInt(Numc[0]);
c2=Integer.parseInt(Numc[1]);
int resultsc=c1*c2;
System.out.println("结果是:"+resultsc);
break;
case 4:
System.out.println("请输入算式:");
Scanner reader4=new Scanner(System.in);
Num=reader4.nextLine();
String[] Numd=Num.split("/");
if("0".equals(Numd[1])){
System.out.println("除数为零,除法不能进行!!");}
else{ float d1,d2;
d1=Float.parseFloat(Numd[0]);
d2=Float.parseFloat(Numd[1]);
float resultsd=d1/d2;
System.out.println("结果是:"+resultsd);}
break;
}
}
}
巷陌

2025-03-28 05:04:30

在你输入的值有String型的数,不能被转化为Number型,或者你的值split分开过后出现了String型的值,不能被转换为Number型
顾北凉城

2025-03-28 04:55:29

String[] Numa,你拆完以后,把结果打印出来,看看自己是不是拆的有问题.
或者是你输入的时候输入格式出了问题
恶毒少女

2025-03-28 00:14:39

你输入的值有String型的数不能被转化为Number型