【问题标题】:Error in java using Scanner with double使用双精度扫描仪的java中的错误
【发布时间】:2015-11-16 05:03:10
【问题描述】:

我刚开始学习java,我无法自己解决错误。 我写了一段代码,目的是将两个“double”类型的变量之间的运算结果转换为整数:

import java.util.Scanner;

public class SommaApprossimata {

    public static void main(String[] args) {

        Scanner input = new Scanner(System. in );

        double n1, n2;

        int risultato;

        System.out.println("Inserisci due numeri frazionari:");

        n1 = input.nextDouble();

        n2 = input.nextDouble();

        risultato = (int) n1 + (int) n2;

        System.out.print("Il risultato è: " + risultato);

    }

}

所以我有两个“double”类型的变量(n1 和 n2),运算结果(risultato)必须以整数形式呈现。

错误是:

Exception in thread "main" java.util.InputMismatchException

如果我不使用 Scanner,转换工作!

public class SommaApprossimataSemplice {

    public static void main(String[] args) {

        double n1, n2;

        int risultato;

        n1 = 3.3;

        n2 = 4.5;

        risultato = (int) n1 + (int) n2;

        System.out.print("Il risultato è: " + risultato);

    }

}

你能给我解释一下吗?提前谢谢!

【问题讨论】:

  • 您在运行程序后向扫描仪提供了什么输入?

标签: java casting int double


【解决方案1】:

这可能是本地化问题(您当前的似乎是意大利语),小数点是逗号而不是点。尝试设置LocaleScanner

Scanner input = new Scanner(System.in);
input.useLocale(Locale.ENGLISH);

或者,您可以将输入传递为3,3 而不是3.3

【讨论】:

  • 你说得对,我用的是 3,3 而不是 3.3,它可以工作 :) 谢谢!
【解决方案2】:

您的代码似乎没有错误。

java.util.InputMismatchException

如果您在运行程序时提供了错误的输入,例如字符串值而不是数值,则可能会发生此错误。

【讨论】:

    【解决方案3】:
    import java.util.Scanner;
    
    public class SommaApprossimata {
    
        public static void main(String[] args) {
    
            Scanner input = new Scanner(System. in );
    
            double n1, n2;
    
            int risultato;
    
            System.out.println("Inserisci due numeri frazionari:");
    
            n1 = input.nextDouble();
    
            n2 = input.nextDouble();
    
            risultato = (int) n1 + (int) n2;
    
            System.out.print("Il risultato è: " + risultato);
    
        }
    
    }
    
    Output :
    
    //save as : SommaApprossimata.java
    //compile as :javac SommaApprossimata.java
    //run as : java SommaApprossimata 
    
    Inserisci due numeri frazionari:
    2.0
    3.0
    Il risultato Φ: 5
    

    当我运行代码时,它给出了正确的输出。

    但如果您收到 java.util.InputMismatchException 错误,则可能是您提供了除 double 以外的其他格式输入。

    看看-

    Inserisci due numeri frazionari:
    abcd
    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 d.main(d.java:16)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多