0

为什么 Java 在使用 Scanner.nextFloat() 而不是 Scanner.nextInt() 时会抛出错误?

package myshit;

import java.lang.Math;
import java.util.Scanner;

public class speed2 {
    public static Scanner keyboard = new Scanner(System.in);

    public static void main(String[] args){
        float number = keyboard.nextFloat();
        System.out.print("Start");

        }
    }

输入:

2.5

输出:

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.nextFloat(Unknown Source)
at myshit.speed2.main(speed2.java:10)

但只需将 nextFloat 切换为 nextInt 就不会发生错误:

package myshit;

import java.lang.Math;
import java.util.Scanner;

public class speed2 {
    public static Scanner keyboard = new Scanner(System.in);

    public static void main(String[] args){
        int number = keyboard.nextInt();
        System.out.print("Start");

        }
    }

输入:

3

输出:

Start

我究竟做错了什么?

看来我需要输入,而不是。似乎是因为 Eclipse

4

2 回答 2

3

你应该像 2,5 而不是 2.5 那样输入它(我认为这只发生在 Netbeans 中,有趣的事实是它被解析为 2.5)

run:
2,5
Your number is 2.5

在 Netbeans 中使用符号 2.5。

run:
2.5

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.nextFloat(Scanner.java:2345)
at test.Test.main(Test.java:25)
于 2015-03-11T21:00:47.330 回答
0

我希望您不要尝试2.5f从命令行为浮点数提供输入或其他内容...因为那样会出现错误..

除此之外,您的代码可以正常工作,因为您可以看到是否添加以打印您作为输入提供的数字:

import java.lang.Math;
import java.util.Scanner;

public class speed2 {
    public static Scanner keyboard = new Scanner(System.in);

    public static void main(String[] args){
        System.out.print("Give me float:");
        float number = keyboard.nextFloat();
                System.out.print("You gave me the number: " + number);


        }
    }

输出

Give me float:2.5
You gave me the number: 2.5
于 2015-03-11T20:57:35.133 回答