我正在创建一个猜谜游戏程序,用户必须输入一个介于1和100之间的数字,并尝试猜测'魔术数字'。
我正在尝试添加一个“提示”功能,根据用户猜测与计算机选择的随机数的接近程度,将出现一条消息,显示如下消息:
在50多英里外结冰。
寒冷超过25英里。
冷却超过15分钟。
暖气超过10英里。
热度超过5度。
在1到4之间沸腾。
不幸的是,当我输入一个数字并按下“猜测”按钮时,错误的“提示”显示在猜测的数字上。特别是“沸腾!在1到4之间!”但是,当我输入准确的“幻数”时,会显示正确的文本。“”你明白了!”(幻数)“就是幻数!”
为了让我每次都能看到“幻数”是什么,我添加了一行代码,稍后将删除这些代码。
仅供参考:这是一个学校项目,我的老师在作业中添加了以下提示:
在数学类中,有一个方法可以用来求一个数的绝对值(正值)。您将需要使用此方法来帮助您确定猜测距离秘密号码有多远。这将允许您确定应该报告哪个消息作为提示。示例代码如下:
int numAbsolute = Math.abs(num);
System.out.println(num); // output: -12
System.out.println(numAbsolute); // output: 12
此外,还需要设置两个条件控制结构来生成两个不同的消息(一个来自基本赋值,另一个用于扩展)。您可以使用concatenate操作符(+)将两条消息连接起来形成一条消息,并在文本字段中显示连接的消息。
这是我的条件控制结构代码:
public class GuessingGame extends javax.swing.JFrame {
//Create the random number between 1 & 100
int randNum = (int)Math.ceil(Math.random()*100);
int numAbsolute = Math.abs(randNum);
剩下的代码是:
private void guessButtonActionPerformed(java.awt.event.ActionEvent evt) {
System.out.println("Secret number is " + randNum); // to be removed later
int input;
input = Integer.parseInt (guessInput.getText());
if (input == randNum)
{
guessOutput.setText("YOU GOT IT! " + randNum + " is the magic number!");
}
else if (input - randNum + numAbsolute > 1)
{
guessOutput.setText("Boiling! Between 1 and 4 away!");
}
else if (input - randNum + numAbsolute > 5)
{
guessOutput.setText("Hot! More than 5 away!");
}
else if (input - randNum + numAbsolute > 15)
{
guessOutput.setText("Cool: More than 15 away.");
}
else if (input - randNum + numAbsolute > 10)
{
guessOutput.setText("Warm! More than 10 away!");
}
else if (input - randNum + numAbsolute > 25)
{
guessOutput.setText("Cold: More than 25 away.");
}
else if (input - randNum + numAbsolute > 50)
{
guessOutput.setText("Sheesh, Freezing: more than 50 away.");
}
}
任何帮助都将不胜感激!
3条答案
按热度按时间toiithl61#
因为
randNum
是正数,numAbsolute
将等于randNum
.这当然意味着
input - randNum + numAbsolute
永远等于input
. 除非input
等于零,那么它总是大于1
. 所以第一个else if
永远都是真的,其余的都不会被检查。我相信这样做的目的是为了
input
以及randNum
,得到它的绝对值:然后你需要考虑一下你检查的顺序。如果绝对差值大于
5
,那么它也比1
. 所以你需要颠倒你检查的顺序:iq3niunx2#
你犯了一个合乎逻辑的错误。我们来分析一下以下情况:
如果
input - randNum + numAbsolute = 2
,它将成为true
.如果
input - randNum + numAbsolute = 6
,它将成为true
.如果
input - randNum + numAbsolute = 15
,它将成为true
.以此类推…即。它将覆盖所有大于
1
.换句话说,此条件将不允许执行以下其他条件:
如何解决?
按相反的顺序重新排列你的条件,即。
z9gpfhce3#
如果你想-你可以改变if-else的执行顺序。
现在你从
这个条件总是正确的。
作为一种选择,你可以开始
等等。。。