我需要一些代码来判断某些用户输入是否为double
。如果它是double
,我需要它存储在变量degreeCelsius
中,如果不是,我需要程序退出。总的来说,该程序将采用一些double
值并将它们用作摄氏度并将它们转换为华氏度。这就是我到目前为止所做的:
import java.util.*;
public class Lab4b
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
double degreeCelsius = 0.0;
double degreeFahrenheit = 0.0;
System.out.println("Celcius | Fahrenheit");
while(scan.next() != null)
{
//this is where I need the code. If you see any other errors, feel free to correct me
//if (degreeCelsius = Double)
{
degreeCelsius = scan.nextDouble();
}
else
{
System.exit(0);
}
degreeFahrenheit = degreeCelsius * (9.0/5.0) + 32.0;
}
}
}
答案 0 :(得分:1)
由于你可能不得到双重输入,最好读取一个字符串,然后尝试将其转换为double。标准模式是:
Scanner sc = new Scanner(System.in);
double userInput = 0;
while (true) {
System.out.println("Type a double-type number:");
try {
userInput = Double.parseDouble(sc.next());
break; // will only get to here if input was a double
} catch (NumberFormatException ignore) {
System.out.println("Invalid input");
}
}
在输入double之前,循环无法退出,之后userInput
将保留该值。
另请注意如何通过将提示放在循环中,可以避免无效输入上的代码重复。
答案 1 :(得分:0)
这是修改你的时间的一种方法:
while(scan.hasNextDouble()) {
degreeCelsius = scan.nextDouble();
degreeFahrenheit = degreeCelsius * (9.0/5.0) + 32.0;
System.out.println(degreeCelsius + " in Celsius is " + degreeFahrenheit + " in Fahrenheit");
}
请记住,扫描仪通过空格分解输入的事件,由于Unix和Windows默认终端设置,您仍然通常需要在条目之间按Enter键。
所以这里有更多信息:
How to read a single char from the console in Java (as the user types it)?
答案 2 :(得分:0)
使用Double.parse
方法。请参阅文档here。
使用上述方法,解析用户输入并捕获NumberFormatException
。任何不是Double-parseable的用户输入都会抛出可以打破循环的异常。
答案 3 :(得分:0)
试试这个
while (scan.hasNext()) {
if (scan.hasNextDouble()) {
double d = scan.nextDouble();
...
} else {
...
答案 4 :(得分:0)
您可以使用以下方法检查输入字符串是否为双倍。
public boolean isDouble(String inputString) {
try {
Double d=Double.parseDouble(inputString);
return true;
} catch (NumberFormatException e) {
return false;
}
}
答案 5 :(得分:0)
{{1}}