int squareRoot = Math.sqrt(i);
一般来说,“可能的有损转换”错误消息意味着什么,您如何修复它?
首先,这是一个编译错误。如果您在运行时的异常消息中看到它,那是因为您运行了一个带有编译错误的程序1。
消息的一般形式是这样的:
“不兼容类型:从
到
的转换可能有损”
int squareRoot = Math.sqrt(i);
这些都是潜在有损的转换:
短
到字节
或字符
字符
到字节
或短
int
到字节
、短
或字符
长
到字节
、短
、字符
或int
float
到字节
、短
、字符
、int
或长
double
到byte
、short
、char
、int
、long
或float
。使编译错误消失的方法是添加一个类型转换。例如;
int i = 47;
int squareRoot = Math.sqrt(i); // compilation error!
int i = 47;
int squareRoot = (int) Math.sqrt(i); // no compilation error
byte b = (int) 512;
for (double d = 0; d < 10.0; d += 1.0) {
System.out.println(array[d]); // <<-- possible lossy conversion
}
解决方法是重写代码,避免使用浮点值作为数组索引。(添加类型强制转换可能是不正确的解决方案。)
第二个例子:
for (long l = 0; l < 10; l++) {
System.out.println(array[l]); // <<-- possible lossy conversion
}
这是前一个问题的变体,解决方法是一样的。不同的是,根本原因是Java数组仅限于32位索引。如果您想要一个包含231-1个以上元素的“类数组”数据结构,则需要定义或找到一个类来实现。
public class User {
String name;
short age;
int height;
public User(String name, short age, int height) {
this.name = name;
this.age = age;
this.height = height;
}
public static void main(String[] args) {
User user1 = new User("Dan", 20, 190);
}
}
$ javac -Xdiags:verbose User.java
User.java:20: error: constructor User in class User cannot be applied to given types;
User user1 = new User("Dan", 20, 190);
^
required: String,short,int
found: String,int,int
reason: argument mismatch; possible lossy conversion from int to short
1 error
int a = 21;
byte b1 = a; // <<-- possible lossy conversion
byte b2 = 21; // OK
byte
、short
、char
或int
。请注意,这只适用于赋值语句,或者更严格地说,适用于赋值上下文。因此:
Byte b4 = new Byte(21); // incorrect
给出编译错误。
一般来说,“可能的有损转换”错误消息是什么意思,您如何修复它?
问题内容: 突然之间,我的应用程序出现了前所未有的问题。我决定检查Apache的错误日志,并发现一条错误消息,指出“ zend_mm_heap已损坏”。这是什么意思。 操作系统:Fedora Core 8 Apache:2.2.9 PHP:5.2.6 问题答案: 经过多次试验和错误,我发现如果我增加php.ini文件中的值,此错误就消失了
我有这个程序,它几乎是一个计算器,但有一个移动的JLabel,每次你点击标签时都应该改变颜色,但我在代码的最底部有3个错误,我已经用注释标记了。所有三个都是:错误:不兼容类型:可能从长整型转换为整数
我希望输入一个和另一个ex: 1和1000000000,现在我希望创建一个大小为1000000000的数组。然后在数组的每个索引处,存储int val,ex:。 当我尝试执行此操作时,Netbeans 会向我显示此行中的错误: “可能从long到int的有损转换”。这是我的密码:-
我为学校编写了一个java程序,它编译正确,但当我试图运行它时,我得到了以下信息: 线程“main”java中出现异常。lang.NoClassDefFoundError:javafx/embed/swing/JFXPanel位于Main。main(main.java:5)由:java引起。lang.ClassNotFoundException:javafx。嵌入摆动java的JFXPanel。b