Java “线程中的异常”;主要的;,这是什么意思?
我正在为课堂做一道家庭作业。你必须计算两点之间的距离。代码基本完成了,但我有一个问题。当我输入q结束循环时。我收到回信了 线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“q” at.sun.misc.FloatingDecimal.readJavaFormatString(未知源) 位于java.lang.Double.parseDouble(未知源代码) main(Distance.java:11)Java “线程中的异常”;主要的;,这是什么意思?,java,exception,runtime-error,Java,Exception,Runtime Error,我正在为课堂做一道家庭作业。你必须计算两点之间的距离。代码基本完成了,但我有一个问题。当我输入q结束循环时。我收到回信了 线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“q” at.sun.misc.FloatingDecimal.readJavaFormatString(未知源) 位于java.lang.Double.parseDouble(未知源代码) main(Distance.java:11) 这就是我写的代码。感谢您的帮助。表示
这就是我写的代码。感谢您的帮助。表示“q”不是数字。要比较字符串,您必须使用
equals
,==
只比较引用。这个老字眼
您不能使用=
安全地比较字符串。改用.equals()
:
if (x1String.equals("q")) // change every == to .equals()
爪哇!=Javascript您不需要与==进行字符串比较。“==”比较检查它们是否是完全相同的对象,而不是字符串是否包含相同的字符。请尝试使用
x1String.equals(“q”)
现在发生的事情是,“==”会说“这不是同一个对象”,然后它会尝试在下一行将“q”解析为双精度,这将引发异常。x1String==“q”
只是比较引用。为了将输入字符串与字符串“q”
进行比较,需要使用compareTo
或equals
:
if (x1String.compareTo("q") == 0)
// or
if (x1String.equals("q"))
正如其他人所说,您应该使用
equals
等函数来比较对象的内容(x1String
和“q”
),而不是比较实际对象/引用,但是,您还应该检查字符串是否为数字和/或catch
ingparseDouble
引发的任何异常
如果有人输入“asdfg”
,该怎么办
if (x1String.compareTo("q") == 0)
// or
if (x1String.equals("q"))