我是Java语言的初学者,我遇到的问题是“不兼容类型:从double到int的转换可能有损”。我能做什么来解决这个问题?我完全失去了它。
import javax.swing.*;
import java.text.*;
public class CalculateIncome{
public static void main(String[]args){
String s1, outMessage;
double monthlySales, income;
DecimalFormat num = new DecimalFormat(",###.00");
s1 = JOptionPane.showInputDialog("Enter the value of monthly sales:");
monthlySales = Double.parseDouble(s1);
switch(monthlySales) {
case 1:
income = 200.00+0.03*monthlySales;
break;
case 2:
income = 250.00+0.05*monthlySales;
break;
case 3:
income = 300.00+0.09*monthlySales;
break;
case 4:
income = 325.00+0.12*monthlySales;
break;
case 5:
income = 350.00+0.14*monthlySales;
break;
case 6:
income = 375.00+0.15*monthlySales;
default:
outMessage = ("For the monthly sales of $" +num.format(monthlySales)+ "\nThe income is"+num.format(income));
}
JOptionPane.showMessageDialog(null,outMessage,"QuickTest Program 5.5b", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
基本上,这个switch语句会导致问题:
switch(monthlySales){
case 1:
...
它将monthlysales
从double
转换为int
。由于double
是64位浮点数,而int
是32位整数,因此从double
到int
的转换很可能不是无损的。
对于monthlySales
使用int
,这是我建议的解决方案,因为您可以简单地将单位从美元更改为美分,或者使用任何您正在计算的货币。
另一个选项是添加一个cast:开关((int)monthlySales){
(不推荐使用,因为错误警告您的信息丢失相同-小数部分将简单地从值中删除,并且double可以保存比int
大得多和小得多的值)。
最后但并非最不重要的一点:用if-else
替换switch
-
我正在修改这段代码的过程中,从一个例子从我的教科书,以兼容一个双数组。代码中有几个地方我不确定如何修复错误“不兼容类型:从double到int的转换可能有损” 我确信还有其他简单的错误我还没有找到,因为我还没有机会调试和校对代码,而且我对Java和编程也很陌生。 谢谢你的帮助!
null 谁能解释一下作为一个初学者我该如何消除这个错误。 太感谢你了!
我是Java的初学者,我已经编写了这段代码。当我尝试运行它时,它不断显示错误,例如: < li >错误:不兼容的类型:从double到int的转换可能有损耗 < li >错误:找不到符号 有人能解释一下我作为一个初学者应该如何解决这个问题吗。 太谢谢你了!
我试图为学校编写一些东西,但我不断收到这个编译错误: 错误:不兼容的类型:从int到byte的转换可能有损失 A = (字节)C / (字节)B;
你好,我正在上高中课,我需要帮助。我收到了标题中提到的错误。这是我的代码(我应该让人们随机猜测零在哪里,我需要让他们知道他们是否接近零,以及他们离零有多近)
我一直在运行此代码并不断收到错误,不知道为什么。双倍漂浮?继续收到消息“错误:不兼容的类型:可能的有损转换从双精度到浮点型。转换如何转换是否有任何问题,因此没有错误 这是较大代码的一部分。