将双打改为I

时间:2015-09-04 21:34:49

标签: java casting int double

我正在为计算机科学课程的介绍做家庭作业,我们正在输入基本命令来获得喝某种能量饮料的人的百分比。我们使用JOptionPane制作文本框,您可以输入人数,计算机有一定的百分比来获取输出。我的问题是我将变量设置为双精度,我的答案是非常长的小数。我想把答案转换成Ints所以我可以得到整数。我试图通过投射来做到这一点,但我一直收到错误消息" EnergyDrink.java:14:错误:变量citrusEnergyDrinkers可能尚未初始化"。我该怎么办?

2 个答案:

答案 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 );

我不喜欢这样,但它确实有效。

祝你好运。