如何读取可能是int或double的输入?

new*_*132 5 java double parsing integer keyboard-input

我正在编写一个程序,我需要从键盘输入.我需要输入一个数字,但我不确定它是否是一个int或一个double.这是我的代码(针对该特定部分):

import java.io.*;
import java.util.*;

//...
Scanner input  = new Scanner(System.in); 
int choice = input.nextInt();
Run Code Online (Sandbox Code Playgroud)

我知道我可以得到一个String或做,parseInt()或者parseDouble()我不知道它会是哪一个.

Pau*_*sik 5

那么,整数也是双倍的,所以如果你认为一切都是双重的,那么你的逻辑就可以了.像这样:

import java.io.*;
import java.util.*;
Scanner input  = new Scanner(System.in); 
double choice = input.nextDouble();
Run Code Online (Sandbox Code Playgroud)

如果您因任何原因需要输入为整数,它只会变得复杂.然后,用于测试int的parseInt()就可以了.


dur*_*597 3

double不管它是什么,只要使用 a 就可以了。使用双精度值作为整数值并没有明显的损失。

Scanner input = new Scanner(System.in); 
double choice = input.nextDouble();
Run Code Online (Sandbox Code Playgroud)

然后,如果您需要知道是否获得了双倍,您可以使用以下命令进行检查Math.floor

if (choice == Math.floor(choice)) {
    int choiceInt = (int) choice);
    // treat it as an int
}
Run Code Online (Sandbox Code Playgroud)

不要搞乱catching NumberFormatException,不要在字符串中搜索句点(这甚至可能不正确,例如,如果输入是1e-3双精度 ( 0.001) 但没有句点。只需将其解析为 adouble并移动在。

另外,不要忘记, 和nextInt()都不nextDouble() 捕获换行符,因此您需要nextLine()在使用它们后使用 a 捕获它。