输入1.0+1.0之后出现错误

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的区别。

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题。

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~