获取Math.abs的十进制数输入/输出

时间:2012-11-12 08:10:45

标签: java exception java.util.scanner

所以我的问题如下: 我在第12行得到一个错误,我想要解决,但没有找到结果。 我使用Eclipse来运行和编写代码。

这就是我的所作所为:

  1. 我写绝对
  2. 我输入一个带小数的数字
  3. 弹出错误

    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.nextDouble(Unknown Source)
    at apples.main(apples.java:12)
    
  4. 为什么这不起作用?此外,我尝试在Eclipse之外的CMD中运行它,也没有成功。

    import java.util.Scanner;
    
    class apples
    {
       public static void main(String args[])
       {
          Scanner scan = new Scanner(System.in);
          System.out.println("Select one of the following(absolute,ceil,floor,max,min,power,squareroot):  ");
          String code = scan.nextLine();
          if (code.contains("absolute"))
          {
             System.out.println("Enter a number to get absolute value: ");
             Scanner num1 = new Scanner(System.in);
             double numberone;
             double numberone1 = num1.nextDouble();
             System.out.println(Math.abs(numberone1));
          }
       }
    }
    

3 个答案:

答案 0 :(得分:1)

InputMismatchException ,扫描程序抛出此异常,指示检索到的令牌与预期类型的​​模式不匹配,或者令牌超出预期类型的​​范围。

num1.nextDouble() - >这里你的传递值与双正则表达式不匹配,或超出范围。

答案 1 :(得分:1)

如果我为您的程序输入了有效的输入输入,那么您的代码对我有用。

如果您收到InputMismatchException,则意味着您没有向扫描仪提供预期的输入。

double numberone1 = num1.nextDouble();

对于您的命令,您应该只提供Double值,否则它将抛出InputMismatchException

答案 2 :(得分:-1)

import java.util.Scanner;

public class Test{

    private static Scanner scan;
    private static Scanner num1;
    public static void main(String[] args){

        scan = new Scanner(System.in);
        String code;
        do{  
        System.out.println("Select one of the following(absolute,ceil,floor,max,min,power,squareroot):  ");
            code = scan.nextLine();
        if (code.contains("absolute"))
          {

             System.out.println("Enter a number to get absolute value: ");
             num1 = new Scanner(System.in);
             //double numberone;
             double numberone1 = num1.nextDouble();
             System.out.println(Math.abs(numberone1));
             }
          }while(!code.contains("absolute"));

    }
}