2015-09-14 159 views
3

我需要程序在用户输入例如4和6.5时运行,反之亦然。 我有,如果别人运行,只有当其任一或当它试图在同一时间,我收到了错误代码,这样运行两个:当用户输入int和double时添加两个数字

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Unknown Source) 
    at java.util.Scanner.next(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at class2.AddTwoNumbers.main(AddTwoNumbers.java:28) 

任何援助将不胜感激

public class AddTwoNumbers { 

     public static void main(String[] args) { 
    Scanner inputSource = new Scanner(System.in); 
    Scanner runAgain = new Scanner(System.in); 
    int input1, input2, result; 
    double input3, input4, result2; 

    String answer = null; 

    do { 

     System.out.println("Please enter two numbers: "); 
    if(inputSource.hasNextInt()) { 

     input1 = inputSource.nextInt(); 
     input2 = inputSource.nextInt(); 


     result = input1 + input2; 
     System.out.println("The sum of " + input1 + " and " + input2 + " is " + result); 

     } else if (!inputSource.hasNextInt()){ 

       input3 = inputSource.nextDouble(); 
       input4 = inputSource.nextDouble(); 

       result2 = input3 + input4; 
       System.out.println("The sum of " + input3 + " and " + input4 + " is " + result2); 

       } else if (inputSource.hasNextInt() || inputSource.hasNextDouble()){ 
        input1 = inputSource.nextInt(); 
        input3 = inputSource.nextDouble(); 

        result2 = input1 + input3; 
        System.out.println("The sum of " + input1 + " and " + input3 + " is " + result2); 
    }   
    System.out.println("Do you want to run this again? Enter Y for Yes or N for No: "); 
      answer = runAgain.next(); 


      } while (answer != "N"); 

      inputSource.close();  
    } 

} 

回答

0

在这种情况下,使用double number = Double.parseDouble(inputSource.nextLine());读取输入更有意义。这对于intdouble输入都有效。

你的代码变得简单:

double input1 = Double.parseDouble(inputSource.nextLine()); 
double input2 = Double.parseDouble(inputSource.nextLine()); 
double result = input1 + input2; 

在那旁边,改变while (answer != "N");while (!answer.equals("N"));

-1

的使用nextLine()方法代替nextInt()并将其解析为双这将两者intdouble类型工作

double result; 
double input1=Double.parseDouble(inputSource.nextLine()); 
double input2=Double.parseDouble(inputSource.nextLine()); 
result=input1+input2; 

,改变while (answer != "N");while (!answer.equals("N"));// since your are comparing string not character