Possible lossy conversion from double to int and cannot find symbol
我的程序出现错误,说:
Lyrics.java:11: error: cannot find symbol
1
2 Cube(b);
^symbol: method Cube(int)
location: class Lyrics
Lyrics.java:15: error: incompatible types: possible lossy conversion from double to int
1
22 errors
我在网站上四处看看,结果发现其他人也有这个问题,但我看了评论,我仍然不理解这个问题,我的代码没有双重含义,为什么它会说这个。我也不否认"找不到符号"这个错误。请帮帮我,我真的有一段时间都在忙这个了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import static java.lang.Math.pow; import java.util.Scanner; public class Lyrics { public static void main(String []args) { int b; Scanner scan = new Scanner(System.in); System.out.println ("Enter a number:"); b = scan.nextInt(); Cube(b); } public static int cube (int b) { return Math.pow (b, 3); } } |
第一个问题是一个简单的打字错误。Java是区分大小写的,所以EDOCX1 0和EDCX1 0是不同的。解决方案:1)保持一致,2)使用以小写字母开头的名称作为方法名称…按照Java样式指南。
第二个问题是由于
解决方案包括:
1 | return b * b * b; // i.e. don't use `pow`. |
或
1 |
第二种方法通过将
您看到的有损转换错误消息是指,对于足够大的
第一个解决方案是更快、更简单的代码,但是如果
更新-如果希望始终将溢出视为错误,则:
或
或以上的变化。
1 -实际上,编译器不知道EDOCX1×22的语义,所以它不知道"…"对于足够大的EDOCX1值,17…但它确实知道,如果方法调用确实返回了足够大的值,那么转换将是有损的。这就是为什么消息说"可能的有损转换"。
两个问题:
您可能应该更改
然后在