我目前有java作业,我将不胜感激。我们要计算一个团队记录方案
我们得到以下数字:
Team1积分
{23,45,65,20}
对手点数 {20,30,20,18}
我把它们扔进一个数组。我还创建了一个公共布尔值。基本上,您要将这些点从数组中拉到布尔值?让布尔决定哪支球队赢了?很明显,team1赢了,但我们应该让计算机决定,而不是人。
这是我的代码:
public class TeamScore {
public static boolean Winner(int team1Points, int opponentPoints) {
if (team1Points > opponentPoints) {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
// Scanner in = new Scanner(System.in);
int[] team1Points = { 23, 45, 65, 20 };
int[] opponentPoints = { 20, 30, 20, 18 };
int team1 = 1;
int opponent = 1;
for (int i = 0; i < 5; i++) {
if (Winner(team1Points[i], opponentPoints[1])) {
team1 += 1;
} else {
opponent += 1;
}
}
for (int i = 0; i < 5; i++) {
if (team1 > 0 && opponent == 0) {
System.out.println("Team 1 has the perfect record!");
} else {
System.out.println("Win" + Arrays.toString(team1Points));
System.out.println("Loss" + Arrays.toString(opponentPoints));
}
}
}
有人可以帮助我吗?我目前正在编程II,但我没有最好的编程老师。任何帮助将不胜感激!
编辑:
我不认为这是一个重复的问题,因为我已经可以通过更改变量i - &gt; 1来解决它。我的问题是计算机认为team1已经赢了,不管得分如何。
当我运行代码时,我收到java.lang.ArrayIndexOutOfBoundsException
错误。但是,当我将team1Points[i]
更改为team1Points[1]
时,它就可以了,并告诉我&#34;第1队有完美的记录!&#34;。但是,如果我将team1Points
的某些数组值更改为小于opponentPoints
,那么它仍会显示&#34;第1组具有完美的记录!&#34;。
答案 0 :(得分:0)
不确定为什么你有一个方法Winner(也像Kevin说的那样,因为命名约定它应该是胜利者)将'(a&gt; b)'变成一个大的if语句。类似的东西出现在代码的其他地方。
你的变量'team1,opponent = 1'莫名其妙地从值1开始,我是否理解这是一种让你的代码向读者暗示两支球队在胜利时初始化的方式?使用0可能更有意义。
你的游戏应该从'time1Points [i]'的indexoutofboundsexception崩溃,因为你有长度为4的数组,但你的循环运行5次(当前使用的范围是[0-4],包括在内)。将循环更改为i = 1将无济于事,因为问题是由于team1Points[4]
语句,您最终会遇到i < 5
。
我不知道你在建模什么游戏或它是如何工作的,但比较'Winner(team1Points [i],opponentPoints [1])'对我来说看起来像是一个明显的错误(你总是看对手得分)他们的第二轮)。
为什么要打印5次结果?如果你想只在team1赢得所有轮次时打印第一条消息,否则就打算每一轮的点,你需要在第二种情况下使用循环计数器作为数组的索引。第一种情况应该打破循环所以它不会被写入五次,此外你不需要检查team1>0 && opponent==0
,因为它足以只检查'iponent == 0'(说到这个条件,它只适用于你如前所述,将变量初始化为0)。您可以检查team1是否等于数组的大小,但imo比opponent==0
更麻烦。
最后,请修复您的缩进。使用预览系统,这样你就可以在发布之前做出双重保证。
编辑:Kevin还提出了一个很好的观点,即你应该在循环第二语句中使用数组的长度。