嘿伙计们我很擅长编码,但我的一个项目是检查一个字符串是否可以解析为double。它在尝试运行程序时不断打印错误。
以下是代码:
public static void main(String[] args) {
SimpleReader in = new SimpleReader1L();
SimpleWriter out = new SimpleWriter1L();
// Constant entered in by user as a string
out.println("Welcome to constant approximator");
out.println("Please enter in a constant to be estimated");
String realConstant = in.nextLine();
//Double variable created in order to reassign later
double test = 0;
//FormatChecker class and canParseDouble verifies if the string is truly a double. boolean method.
FormatChecker.canParseDouble(realConstant);
//Test reassign and converts
test = Double.parseDouble(realConstant);
out.print(test);
in.close();
out.close();
}
}
这是错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "pi"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at ABCDGuesser1Test.main(ABCDGuesser1Test.java:36)
答案 0 :(得分:0)
这是因为您键入的pi
未被识别为π
(pi)常量。你键入的是一个字符串,这些字符不能转换为数字。
如果要输入任何数字,包括pi
之类的特殊常量,则必须先检查输入是否为数字或字符串。如果它是String,您可以尝试将其与定义的常量(如π
或e
)匹配,并在Java中使用它们定义的值,例如Math.PI
。
答案 1 :(得分:0)
您应该使用nodemon --exec npm start
的结果,而不仅仅是调用它。我想是这样的事情:
canParseDouble()
答案 2 :(得分:0)
正如你所说:
//FormatChecker class and canParseDouble verifies if the string is truly a double. boolean method.
FormatChecker.canParseDouble(realConstant);
你知道这行调用了一个布尔方法,然后返回true或false。但是,您不会使用此返回值。如果是这样,甚至调用函数的意义是什么,对吧?
您正在尝试检查字符串realConstant是否为double,方法会检查它,但您只是忽略它,这里。我相信你有一个错误,因为它是否真的是一个双倍,其余的代码将运行。在字符串实际上不是double的情况下,将出现错误,因为其余代码无法编译。
然后您应该使用if语句,例如:
if (FormatChecker.canParseDouble(realConstant)) {
test = Double.parseDouble(realConstant);
out.println(test);
}
另外,我认为您不应期望输入“pi”来返回双倍!