我正在为计算机科学课程的介绍做家庭作业,我们正在输入基本命令来获得喝某种能量饮料的人的百分比。我们使用JOptionPane制作文本框,您可以输入人数,计算机有一定的百分比来获取输出。我的问题是我将变量设置为双精度,我的答案是非常长的小数。我想把答案转换成Ints所以我可以得到整数。我试图通过投射来做到这一点,但我一直收到错误消息" EnergyDrink.java:14:错误:变量citrusEnergyDrinkers可能尚未初始化"。我该怎么办?
答案 0 :(得分:0)
没有代码就无法解决这个问题。该错误不是由于转换的任何问题,而是因为编译器错误说:
变量citrusEnergyDrinkers可能尚未初始化
这意味着变量在您尝试转换时可能不会保存值,从而导致未定义的行为,java-designers不允许这样做。
问题在于错误消息告诉:citrusEnergyDrinkers
在一些try-catch-block或仅在某些条件下运行的块中获取其值,如if
。解决这个问题的一种方法是简单地将citrusEnergyDrinkers
初始化为0:
double citrusEnergyDrinkers = 0;
。
请注意,这可能会产生不正确的结果,具体取决于未设置值时发生的情况,以防在设置值之前未输入/中断上述代码块。
转换:
Math.round(citrusEnergyDrinkers)
最有可能优于int
的简单转换,因为double
大部分时间由于存储在内存中的方式而有一些不精确性,而round
实际上是圆的(int) 0.75 //produces 0
Math.round(0.75) //produces 1
价值,而演员只会删除摩擦部分。例如:
function t = truthTable(n)
dims = repmat({[false, true]}, 1, n);
[grids{1:n}] = ndgrid(dims{:});
grids = cellfun(@(g)g(:), grids, 'UniformOutput',false);
t = [grids{:}];
答案 1 :(得分:0)
您可以将double乘以100,然后转换为int:
double d = .77583495;
int perc = (int) Math.round( d );
我不喜欢这样,但它确实有效。
祝你好运。