我来自Python背景,并且正在学习一些Java教程(该语言的新手)并且正在努力理解我遇到的错误。
这段代码很好用:
fahrString = JOptionPane.showInputDialog("Enter the temperature in F");
fahr = new Double(fahrString);
cel = (fahr - 32) * 5.0/9.0;
但是这段代码也很完美......
fahrString = JOptionPane.showInputDialog("Enter the temperature in F");
cel = (Double(fahrString) - 32) * 5.0/9.0;
...但是给出了编译错误:
TempConvGUI.java:12: cannot find symbol
symbol : method Double(java.lang.String)
location: class TempConvGUI
cel = (Double(fahrString) - 32) * 5.0/9.0;
^
1 error
为什么?我可以理解,如果Java说根据需要进行转换是不行的,那么为什么我的程序编译和运行完美?
答案 0 :(得分:4)
如果您想将其转换为双击,请按以下步骤
((double)fahrString - 32) * 5.0/9.0;
或
((Double)fahrString - 32) * 5.0/9.0;
我认为最好使用Double.parseDouble(fahrString)
,因为据我所知,你试图将String转换为double。
你尝试的方式是错的,这不是铸造的方式。
答案 1 :(得分:2)
施法就像这样:
(Double)fahrstring
不喜欢这样:
Double(fahrstring)
当您尝试调用名为Double
的方法时,Java会解释后者,这就是为什么它抱怨它无法找到符号(您没有名为Double
的方法)的原因
顺便说一句,如果没有具体的理由使用Double
,我建议改为使用等效原语double
。
答案 2 :(得分:2)
这构造了一个新的双重:
fahr = new Double(fahrString);
内联等价物将是:
cel = (new Double(fahrString) - 32) * 5.0/9.0;
对于记录而言,不是强制转换,而是创建一个解析字符串的新对象。我所知道的语言(甚至python)都不允许你从String转换为double。在python中没有新的运算符,所以:
cel = double(fahrString)
仍然会创建一个新对象。
答案 3 :(得分:0)
你错过了一些方括号;)
fahrString = JOptionPane.showInputDialog("Enter the temperature in F");
cel = ((Double)fahrString - 32) * 5.0/9.0;
答案 4 :(得分:0)
Double.parseDouble(String)
将您的String文字转换为Double值,前提是String值对双重转换有效
cel = (Double.parseDouble(fahrString) - 32) * 5.0/9.0;
这是将String解析为double值的最简单方法。这将在传递时抛出NPE当传递的String文字不是用于执行双重转换的有效String时,String literal为null / NumberFormatException
答案 5 :(得分:0)
尝试
cel = ((Double.parseDouble(fahrString)) - 32) * 5.0/9.0;