gpt4 book ai didi

java - JOptionPane错误-乌龟和野兔赛跑

转载 作者:行者123 更新时间:2023-12-02 11:01:56 25 4
gpt4 key购买 nike

我是Java入门类(class)的新手,正在为程序苦苦挣扎。我之前已经发布过有关该程序的信息,但这是一个不同的问题。我的程序应该模拟野兔和乌龟之间的比赛。我想我拥有所需的一切,但我的JOptionPane短语遇到了麻烦。我认为我的说法还可以,但我的发言中的while部分遇到了问题。这是错误消息:找不到符号-变量确定。
我使用Blue J编写和编译程序。有什么理由不起作用吗?我认为变量OK是程序用户选择启动程序的东西。我错了吗?任何人都可以帮助解决这个问题吗?您在程序中还看到其他需要修复的内容吗?谢谢

import java.util.Random;
import javax.swing.JOptionPane;

class Race
{
int [] race = new int[70];
int tortoise;
int hare;
Random randomGenerator = new Random();
public boolean again = true;
public void StartRace()
{
tortoise = 1;
hare = 1;
System.out.println("AND THEY'RE OFF!!!!");
while (tortoise < race.length && hare < race.length)
{
moveHare();
moveTortoise();
DisplayCurrentLocation();
String request;
}
if
(tortoise > hare)
{
System.out.println("\n TORTOISE WINS!!");
}
else if
(hare > tortoise)
{
System.out.println("\n HARE WINS!!!");
}
else if
(hare == tortoise)
{
System.out.println("TIE!!!");
}
}

public void moveTortoise()
{
int n = randomGenerator.nextInt(10) + 1;
//fast plod
if ( n > 0 && n< 6)
tortoise += 3;
//slip
else if (n > 10 && n< 11)
tortoise -= 6;
//slow plod
else if (n > 6 && n< 9)
++tortoise;
// protect from going past start
if (tortoise < 1)
tortoise = 1;
// to make sure game ends
else if (tortoise > 70)
tortoise = 70;
}// end tortoise

public void moveHare()
{
int m = randomGenerator.nextInt(10) + 1;
//big hop
if (m > 0 && m<3)
hare += 9;
//big slip
else if (m < 6)
hare -= 12;
// small hop
else if (m > 3 && m< 5)
++hare;
// )small slip
else if (m < 9)
hare -= 2;
else if (m < 11)
hare += 0;
//ensure hare doesn't go past start
if (hare < 1)
hare = 1;
// ensure hare doesnt go past end
else if (hare > 70)
hare = 70;
} // end movehare

public void DisplayCurrentLocation()
{
//this is the location of each on the array
for (int count = 1; count <= 70; count++)
// when at same location
if (count ==tortoise && count ==hare)
{
System.out.println("OUCH");
}
else if (count == hare)
{
System.out.println("H");
}
else if (count == tortoise)
{
System.out.println("T");
}
else
System.out.println();

}

public static void main ( String[] args)
{
Race Application = new Race();
int startRaceRequest;
while(startRaceRequest != JOptionPane.OK_OPTION)
{
JOptionPane.showConfirmDialog(null, "Select OK To Begin the Race!:");
}
do
{
Application.StartRace();

} while(startRaceRequest != JOptionPane.OK_OPTION);
}
}

最佳答案

关于JOptionPane的问题:建议您使用

JOptionPane.showConfirmDialog(null, "Message");

代替
JOptionPane.showMessageDialog(null, "Message");

因为它允许您执行以下操作:
    int startRaceRequest;
while(startRaceRequest != JOptionPane.OK_OPTION)
JOptionPane.showConfirmDialog(null, "Hit OK to start the race!");

稍后我在代码中实际上并不理解“确定”的含义,但是如果您引用已确认的对话框,请尝试使用JOptionPane.OK_OPTION,它表示一个int。

还为您的代码提供了一些帮助:在开始时,初始化长度为70的int []竞赛。每当检查其中一个竞赛者的年龄是否等于或大于70时,您就可以像这样进行操作
if(tortoise < 70 && hare < 70){}

wich被称为“硬编码”,您应尽量避免这种情况,以使代码保持动态。
如果你这样做
if(tortoise < race.length && hare < race.length)

您不必仅因为更改了比赛的时间而重写了一半的代码。

方法MoveTortoise和MoveHare的另一件事。按照惯例,应该将它们命名为moveTortoise和moveHare,因为Java中的方法以小写字母开头(适用于所有方法!)。在if条件中的这两个方法中,您编写了太多代码。例如:
if (m == 1 || m == 2)
hare += 9;
else if (m == 6)
hare -= 12;
else if (m == 3 && m == 5) //there is something wrong here, m cant be 5 and 3 ;)
++hare;
else if (m == 7 || m == 8)
hare -= 2;
else if (m == 9 || m == 10)
hare += 0;

可以切成这样:
if(m > 0 && m < 3){ // if a number is > 0 and < 3 -> number is 1 or 2

} else if(m < 6){ // if a number is > 0 and > 3 -> if number is < 6 -> number could be 3, 4 or 5

} else if(m == 6){

} else if(m < 9){ // -> 7 or 8

} else if(m < 11){ // 9 or 10

}

另外,您使用随机数生成器,我认为您的目标是1到10之间的数字,但是
int m = randomGenerator.nextInt(11);

将返回一个从0到10的数字。相反,请尝试以下操作:
int m = randomGenerator.nextInt(10) + 1;

wich将返回从0到9的数字,加1将得到1到10之间的数字。

希望这可以帮助。如果您的问题得到回答,请记住要提供反馈并标记解决方案。

关于java - JOptionPane错误-乌龟和野兔赛跑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com