package lu;
import java.util.Scanner;
public class kkk {
public static void main(String[] args){
Scanner sc= new Scanner (System.in );
double s1=sc.nextDouble();
String s=sc.nextLine();
char op=s.charAt(0);
double s2=sc.nextDouble();
if(op=='/') {
if(Math.abs(s2)<1e-10) {
System.out.print("Wrong input!");
}
System.out.printf("%.2f",s1/s2);
}
else if(op=='*') {
System.out.printf("%.2f",s1*s2);
}
else if(op=='+') {
System.out.printf("%.2f",s1+s2);
}
else if(op=='-') {
System.out.printf("%.2f",s1-s2);
}
else {
System.out.print("Wrong input!");
}
}
}
输入1.0+1.0之后出现以下错误:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at lu.kkk.main(kkk.java:11)
题主补充下你的需求是啥吧。sc.nextXXX 使用肯定不对,但不知道你要干啥
为什么还要输入+?
Scanner sc= new Scanner (System.in );
System.out.println("第一位数");
double s1=sc.nextDouble();
System.out.println("运算符");
String s=sc.next();
char op=s.charAt(0);
System.out.println("第二位数");
double s2=sc.nextDouble();
if(op=='/') {
if(Math.abs(s2)<1e-10) {System.out.print("Wrong input!");}
System.out.printf("%.2f",s1/s2);
}
else if(op=='*') {System.out.printf("%.2f",s1*s2);}
else if(op=='+') {System.out.printf("%.2f",s1+s2);}
else if(op=='-') {System.out.printf("%.2f",s1-s2);}
else {System.out.print("Wrong input!");}
}
你这样写每个sc.nextXXX都会造成程序等待输入 输入应该分为3步。还有nextDouble后再输入运算符的时候不能使用nextLine 应该用next就可以了 nextLine会将上一个输入的回车作为输入。具体可以自行搜索next和nextLine的区别。
您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题。
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~