Java 在保龄球记分员中只计算下一个球,而不是下两个球?
抱歉,编程太长,效率太低,我自己已经尽可能地延长了时间:p我已经测试了记分器,除了Stroks之外的所有功能都正常。但出于某种原因,一次打击只会增加下一个球,而不是下两个球。谢谢Java 在保龄球记分员中只计算下一个球,而不是下两个球?,java,Java,抱歉,编程太长,效率太低,我自己已经尽可能地延长了时间:p我已经测试了记分器,除了Stroks之外的所有功能都正常。但出于某种原因,一次打击只会增加下一个球,而不是下两个球。谢谢 import java.util.Scanner; public class bowlingproject { public static void main(String[] args) { int[][] bowlingArray = new int[2][11]; Scanner in
import java.util.Scanner;
public class bowlingproject {
public static void main(String[] args) {
int[][] bowlingArray = new int[2][11];
Scanner in = new Scanner(System.in);
int score1;
int score2;
int score3;
int score4;
int score5;
int score6;
int score7;
int score8;
int score9;
int score10;
int allscore;
System.out.println("Frame 1: first ball");
bowlingArray[0][0] = in.nextInt();
if (bowlingArray[0][0] == 10) {
bowlingArray[1][0] = 0;
System.out.println("Strike!");
} else if (bowlingArray[0][0] != 10) {
System.out.println("Frame 1: second ball");
bowlingArray[1][0] = in.nextInt();
if (bowlingArray[0][0] + bowlingArray[1][0] == 10) {
System.out.println("Spare!");
}
}
System.out.println("Frame 2: first ball");
bowlingArray[0][1] = in.nextInt();
if (bowlingArray[0][1] == 10) {
bowlingArray[1][1] = 0;
System.out.println("Strike!");
}
if (bowlingArray[0][1] != 10) {
System.out.println("Frame 2: second ball");
bowlingArray[1][1] = in.nextInt();
if (bowlingArray[0][1] + bowlingArray[1][1] == 10) {
System.out.println("Spare!");
}
}
System.out.println("Frame 3: first ball");
bowlingArray[0][2] = in.nextInt();
if (bowlingArray[0][2] == 10) {
bowlingArray[1][2] = 0;
System.out.println("Strike!");
}
if (bowlingArray[0][2] != 10) {
System.out.println("Frame 3: second ball");
bowlingArray[1][2] = in.nextInt();
if (bowlingArray[0][2] + bowlingArray[1][2] == 10) {
System.out.println("Spare!");
}
}
System.out.println("Frame 4: first ball");
bowlingArray[0][3] = in.nextInt();
if (bowlingArray[0][3] == 10) {
bowlingArray[1][3] = 0;
System.out.println("Strike!");
}
if (bowlingArray[0][3] != 10) {
System.out.println("Frame 4: second ball");
bowlingArray[1][3] = in.nextInt();
if (bowlingArray[0][3] + bowlingArray[1][3] == 10) {
System.out.println("Spare!");
}
}
System.out.println("Frame 5: first ball");
bowlingArray[0][4] = in.nextInt();
if (bowlingArray[0][4] == 10) {
bowlingArray[1][4] = 0;
System.out.println("Strike!");
}
if (bowlingArray[0][4] != 10) {
System.out.println("Frame 5: second ball");
bowlingArray[1][4] = in.nextInt();
if (bowlingArray[0][4] + bowlingArray[1][4] == 10) {
System.out.println("Spare!");
}
}
System.out.println("Frame 6: first ball");
bowlingArray[0][5] = in.nextInt();
if (bowlingArray[0][5] == 10) {
bowlingArray[1][5] = 0;
System.out.println("Strike!");
}
if (bowlingArray[0][5] != 10) {
System.out.println("Frame 6: second ball");
bowlingArray[1][5] = in.nextInt();
if (bowlingArray[0][5] + bowlingArray[1][5] == 10) {
System.out.println("Spare!");
}
}
System.out.println("Frame 7: first ball");
bowlingArray[0][6] = in.nextInt();
if (bowlingArray[0][6] == 10) {
bowlingArray[1][6] = 0;
System.out.println("Strike!");
}
if (bowlingArray[0][6] != 10) {
System.out.println("Frame 7: second ball");
bowlingArray[1][6] = in.nextInt();
if (bowlingArray[0][6] + bowlingArray[1][6] == 10) {
System.out.println("Spare!");
}
}
System.out.println("Frame 8: first ball");
bowlingArray[0][7] = in.nextInt();
if (bowlingArray[0][7] == 10) {
bowlingArray[1][7] = 0;
System.out.println("Strike!");
}
if (bowlingArray[0][7] != 10) {
System.out.println("Frame 8: second ball");
bowlingArray[1][7] = in.nextInt();
if (bowlingArray[0][7] + bowlingArray[1][7] == 10) {
System.out.println("Spare!");
}
}
System.out.println("Frame 9: first ball");
bowlingArray[0][8] = in.nextInt();
if (bowlingArray[0][8] == 10) {
bowlingArray[1][8] = 0;
System.out.println("Strike!");
}
if (bowlingArray[0][8] != 10) {
System.out.println("Frame 9: second ball");
bowlingArray[1][8] = in.nextInt();
if (bowlingArray[0][8] + bowlingArray[1][8] == 10) {
System.out.println("Spare!");
}
}
System.out.println("Frame 10: first ball");
bowlingArray[0][9] = in.nextInt();
if (bowlingArray[0][9] == 10) {
System.out.println("Strike!");
System.out.println("Frame 11: first ball");
bowlingArray[1][9] = in.nextInt();
System.out.println("Frame 11: second ball!");
bowlingArray[0][10] = in.nextInt();
} else if (bowlingArray[0][9] != 10) {
System.out.println("Frame 10: second ball");
bowlingArray[1][9] = in.nextInt();
if (bowlingArray[0][9] + bowlingArray[1][9] == 10) {
System.out.println("Spare!");
System.out.println("Frame 11: first ball!");
bowlingArray[0][10] = in.nextInt();
}
}
if (bowlingArray[0][0] + bowlingArray[0][1] == 20) {
score1 = bowlingArray[0][0] + bowlingArray[0][1] + bowlingArray[0][2];
}
if (bowlingArray[0][0] == 10) {
score1 = 10 + bowlingArray[0][1] + bowlingArray[1][1];
}
if (bowlingArray[0][0] + bowlingArray[1][0] == 10) {
score1 = 10 + bowlingArray[0][1];
} else
score1 = bowlingArray[0][0] + bowlingArray[1][0];
if (bowlingArray[0][1] + bowlingArray[0][2] == 20) {
score2 = bowlingArray[0][1] + bowlingArray[0][2] + bowlingArray[0][3];
}
if (bowlingArray[0][1] == 10) {
score2 = 10 + bowlingArray[0][2] + bowlingArray[1][2];
}
if (bowlingArray[0][1] + bowlingArray[1][1] == 10) {
score2 = 10 + bowlingArray[0][2];
} else
score2 = bowlingArray[0][1] + bowlingArray[1][1];
if (bowlingArray[0][2] + bowlingArray[0][3] == 20) {
score3 = bowlingArray[0][2] + bowlingArray[0][3] + bowlingArray[0][4];
}
if (bowlingArray[0][2] == 10) {
score3 = 10 + bowlingArray[0][3] + bowlingArray[1][3];
}
if (bowlingArray[0][2] + bowlingArray[1][2] == 10) {
score3 = 10 + bowlingArray[0][3];
} else
score3 = bowlingArray[0][2] + bowlingArray[1][2];
if (bowlingArray[0][3] + bowlingArray[0][4] == 20) {
score4 = bowlingArray[0][3] + bowlingArray[0][4] + bowlingArray[0][5];
}
if (bowlingArray[0][3] == 10) {
score4 = 10 + bowlingArray[0][4] + bowlingArray[1][4];
}
if (bowlingArray[0][3] + bowlingArray[1][3] == 10) {
score4 = 10 + bowlingArray[0][4];
} else
score4 = bowlingArray[0][3] + bowlingArray[1][3];
if (bowlingArray[0][4] + bowlingArray[0][5] == 20) {
score5 = bowlingArray[0][4] + bowlingArray[0][5] + bowlingArray[0][6];
}
if (bowlingArray[0][4] == 10) {
score5 = 10 + bowlingArray[0][5] + bowlingArray[1][5];
}
if (bowlingArray[0][4] + bowlingArray[1][4] == 10) {
score5 = 10 + bowlingArray[0][5];
} else
score5 = bowlingArray[0][4] + bowlingArray[1][4];
if (bowlingArray[0][5] + bowlingArray[0][6] == 20) {
score6 = bowlingArray[0][5] + bowlingArray[0][6] + bowlingArray[0][7];
}
if (bowlingArray[0][5] == 10) {
score6 = 10 + bowlingArray[0][6] + bowlingArray[1][6];
}
if (bowlingArray[0][5] + bowlingArray[1][5] == 10) {
score6 = 10 + bowlingArray[0][6];
} else
score6 = bowlingArray[0][5] + bowlingArray[1][5];
if (bowlingArray[0][6] + bowlingArray[0][7] == 20) {
score7 = bowlingArray[0][6] + bowlingArray[0][7] + bowlingArray[0][8];
}
if (bowlingArray[0][6] == 10) {
score7 = 10 + bowlingArray[0][7] + bowlingArray[1][7];
}
if (bowlingArray[0][6] + bowlingArray[1][6] == 10) {
score7 = 10 + bowlingArray[0][7];
} else
score7 = bowlingArray[0][6] + bowlingArray[1][6];
if (bowlingArray[0][7] + bowlingArray[0][8] == 20) {
score8 = bowlingArray[0][7] + bowlingArray[0][8] + bowlingArray[0][9];
}
if (bowlingArray[0][7] == 10) {
score8 = 10 + bowlingArray[0][8] + bowlingArray[1][8];
}
if (bowlingArray[0][7] + bowlingArray[1][7] == 10) {
score8 = 10 + bowlingArray[0][8];
} else
score8 = bowlingArray[0][7] + bowlingArray[1][7];
if (bowlingArray[0][8] + bowlingArray[0][9] == 20) {
score9 = bowlingArray[0][8] + bowlingArray[0][9] + bowlingArray[0][10];
}
if (bowlingArray[0][8] == 10) {
score9 = 10 + bowlingArray[0][9] + bowlingArray[1][9];
}
if (bowlingArray[0][8] + bowlingArray[1][8] == 10) {
score9 = 10 + bowlingArray[0][9];
} else
score9 = bowlingArray[0][8] + bowlingArray[1][8];
if (bowlingArray[0][9] == 10) {
score10 = 10 + bowlingArray[1][9] + bowlingArray[0][10];
}
if (bowlingArray[0][9] + bowlingArray[1][9] == 10) {
score10 = 10 + bowlingArray[0][10];
} else
score10 = bowlingArray[0][9] + bowlingArray[1][9];
allscore = score1 + score2 + score3 + score4 + score5 + score6 + score7 + score8 + score9 + score10;
System.out.println("Your score is:" + allscore);
}
}在这里,当你击球时,将第二个球设为0:
if (bowlingArray[0][0] == 10) {
bowlingArray[1][0] = 0;
System.out.println("Strike!");
后来:
if (bowlingArray[0][0] == 10) {
score1 = 10 + bowlingArray[0][1] + bowlingArray[1][1];
}
if (bowlingArray[0][0] + bowlingArray[1][0] == 10) {
score1 = 10 + bowlingArray[0][1];
} else
score1 = bowlingArray[0][0] + bowlingArray[1][0];
发生了什么:
在罢工的情况下,两个ifs总是正确的,因为它总是10+0。第一个将两个值都保存在score1中,但会被第二个if覆盖。可能的解决方案是在第二个if语句中使用else if。您能否缩小问题的范围,因为是的,浏览可能不相关的代码行相当长。经过简短的测试后,似乎罢工记分器工作不正常。因此,从if bowlingArray[0][0]+bowlingArray[0][1]==20开始的代码的下半部分在涉及罢工时不起作用。涉及每个得分变量score1、score2、score3等的前两个if语句用于计算罢工。因此,如果bowlingArray[][]+bowlingArray[][]==20{表示击球后掷出的球也是一个击球。第二个if语句表示击球时,但下一个数字不是一个击球。出于某种原因,对于这两个语句,它只在击球时加1个球,而不是2个球