【发布时间】:2014-05-23 05:49:18
【问题描述】:
我的代码运行良好,没有错误,但程序假设你是否等于、小于或大于计算机生成的数字(双),当我输入 1 或 1.0 时,计算机生成一个 2 甚至有时是一个 4,它在说我是平等的,我不知所措,甚至不知道从哪里开始找出问题所在。我得到的唯一线索是四舍五入可能会影响它,因为正如您在代码中看到的那样,它正在四舍五入。
String overOrUnder = "Over or Under?";
String CompNumberString = "";
double compNumber;
String userNumberString = "";
double userNumber;
public void actionPerformed(ActionEvent e)
{
generateCompNumber();
labelCompNumber.setText(String.valueOf(compNumber));
labelCompNumber.revalidate();
getUserInputToInteger();
labelUserNumber.revalidate();
labelUserNumber.setText(userNumberString);
overOrUnderOrEqual();
}
});
}
public void generateCompNumber()
{
compNumber = Math.random() * 5;
compNumber = Math.round(compNumber * 1);
compNumber = compNumber/1;
}
public void getUserInputToInteger()
{
userNumberString = jTextYourNumber.getText();
userNumber = Double.parseDouble(userNumberString);
}
public void overOrUnderOrEqual()
{
labelOverOrUnder.setText(overOrUnder);
if (compNumber == userNumber)
{
equal = true;
overOrUnder = "RIGHT ON!";
}
else if (compNumber > userNumber)//comp greater user
{
equal = false;
overOrUnder = "You was Under!";
}
else if (compNumber < userNumber)//comp less user
{
equal = false;
overOrUnder = "You was Over!";
}
}
【问题讨论】:
-
你试过使用调试器吗?
-
不,我不是很擅长使用,老实说从来没有
-
Brandon,如果你以后打算做任何编程,你应该今天学会使用调试器。这不是太难,它会节省你几个小时。如果您成为一名专业程序员,它将真正为您节省几个月的生命。不会使用调试器的程序员有点像不会使用锤子的木匠。
-
问题可能出在你有
labelOverOrUnder.setText(overOrUnder);之前你决定用户的号码是否大于/小于/等于?这似乎是一个非常错误的地方...... -
Brandon - 您可能想考虑使用 Eclipse。它是免费的,并且比 TextPad 有一些优势。
标签: java parsing math double rounding