Java 在保龄球记分员中只计算下一个球,而不是下两个球?

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

抱歉,编程太长,效率太低,我自己已经尽可能地延长了时间:p我已经测试了记分器,除了Stroks之外的所有功能都正常。但出于某种原因,一次打击只会增加下一个球,而不是下两个球。谢谢

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个球