在 while 循环中声明字符串变量,而不是在整个循环中循环 - java



我被困在一个应该声明一个名为"phrase"的字符串变量的部分,它不应该一直循环。

为了给你一个想法,我的任务是:与选项 1 类似,只是用户在完成输入第一个团队的结果时输入"N"(而不是"Q"(。 然后,程序输入第二个团队名称及其结果,直到输入"Q"。 输出两个语句,如选项 1 中的语句,后跟第三个语句,说明哪个团队排名第一(基于点数(

示例输入:

2
Toronto
W
W
L
O
W
O
W
N
Montreal // how would I make this appear in the same while loop?
L
L
O 
L
L
W
L
L
Q

示例输出:

Toronto has played 7 games and has earned 10 points
Montreal has played 8 games and has earned 3 points
Toronto is in first place by 7 points

更新:

我的代码:

else if (option == 2){
int counter = 0;
int totalpoints = 0;
String phrase = keyboard.next();
while(go){
String letter = keyboard.next();
if (letter.equals("W")){
pointsW++;
}
else if (letter.equals("L")){
pointsL++;
}
else if (letter.equals("O")){
pointsO++;
}
counter++;
if (letter.equals("N")){
totalpoints = pointsW + pointsL + pointsO;
counter--;
go = false;
}
}
int counter2 = 0;
int totalpoints2 = 0;
pointsW = 2;
pointsL = 0;
pointsO = 1;
String phrase2 = keyboard.next();
while (go2){
String letter2 = keyboard.next();
if (letter2.equals("W")){
pointsW++;
}
else if (letter2.equals("L")){
pointsL++;
}
else if (letter2.equals("O")){
pointsO++;
}
counter2++;
if (letter2.equals("Q")){
counter2--;
totalpoints2 = pointsW + pointsL + pointsO;
go2 = false;
}
}
System.out.println(phrase + " has played "+counter+" games and has earned "+totalpoints+" points");
System.out.println(phrase2 + " has played "+counter2+" games and has earned "+totalpoints2+" points");
if (totalpoints > totalpoints2){
System.out.println(phrase + " is in first place by "+(totalpoints - totalpoints2) + " points");
}else{
System.out.println(phrase2 + " is in first place by "+(totalpoints2 - totalpoints) + " points");
}
}

示例输入:

2
Toronto
W
W
L
O
W
O
W
N
Montreal 
L
L
O 
L
L
W
L
L
Q

问题:这是我得到的输出"蒙特利尔打了 8 场比赛,获得了 11 分",而它应该是"蒙特利尔打了 8 场比赛并获得了 3 分">

我得到的输出

<小时 />
  1. 您可以对单个点重用相同的变量,即pointsWpointsO,因为您不希望将其值保留到发布结果的末尾。循环条件的变量也是如此,即go和用于输入输赢的变量,即letter.
  2. 您将需要数组或不同的变量来存储总分、计数和团队名称。

    import java.util.Scanner;
    public class Standings {
    public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    int option = keyboard.nextInt();
    int pointsW = 0;
    int pointsO = 0;
    String letter;
    boolean go = true;
    if (option == 2) {
    // Variables for total points, counting, and name for the first team
    int playedGamesTeamOne = 0;
    int teamOnePoints = 0;
    String teamOneName = keyboard.next();
    while (go) {
    letter = keyboard.next();
    if (letter.equals("W")) {
    pointsW += 2;
    } else if (letter.equals("O")) {
    pointsO++;
    }
    playedGamesTeamOne++;
    if (letter.equals("N")) {
    teamOnePoints = pointsW + pointsO;
    playedGamesTeamOne--;
    go = false;
    }
    }
    // Reset common variables
    go = true;
    pointsW = 0;
    pointsO = 0;
    // Variables for total points, counting, and name for the second team
    int playedGamesTeamTwo = 0;
    int teamTwoPoints = 0;
    String teamTwoName = keyboard.next();
    while (go) {
    letter = keyboard.next();
    if (letter.equals("W")) {
    pointsW += 2;
    } else if (letter.equals("O")) {
    pointsO++;
    }
    playedGamesTeamTwo++;
    if (letter.equals("Q")) {
    teamTwoPoints = pointsW + pointsO;
    playedGamesTeamTwo--;
    go = false;
    }
    }
    System.out.println(teamOneName + " has played " + playedGamesTeamOne + " games and has earned "
    + teamOnePoints + " points");
    System.out.println(teamTwoName + " has played " + playedGamesTeamTwo + " games and has earned "
    + teamTwoPoints + " points");
    if (teamOnePoints > teamTwoPoints) {
    System.out
    .println(teamOneName + " is in first place by " + (teamOnePoints - teamTwoPoints) + " points");
    } else {
    System.out
    .println(teamTwoName + " is in first place by " + (teamTwoPoints - teamOnePoints) + " points");
    }
    }
    }
    }
    

    运行示例:

    2
    Toronto
    W
    W
    L
    O
    W
    O
    W
    N
    Montreal 
    L
    L
    O
    L
    L
    W
    L
    L
    Q
    Toronto has played 7 games and has earned 10 points
    Montreal has played 8 games and has earned 3 points
    Toronto is in first place by 7 points
    

您可以将此代码用于选项二

Scanner keyboard = new Scanner(System.in);
int teamCounter = 1;
//String[] teamsNames = new String[2];
String teamOneName="";
String teamTwoName="";
//int[] playedGames = new int[2];
int playedGamesTeamOne = 0;
int playedGamesTeamTwo = 0;
//int[] points = new int[2];
int teamOnePoints = 0;
int teamTwoPoints = 0;
boolean firstTimeTeam1 = true;
boolean firstTimeTeam2 = true;
while (teamCounter <= 2) {
if (teamCounter == 1) {
if (firstTimeTeam1) {
teamOneName = keyboard.nextLine();
firstTimeTeam1 = false;
}
String letter = keyboard.next();
if (letter.equals("W")) {
teamOnePoints += 2;
playedGamesTeamOne++;
} else if (letter.equals("L")) {
playedGamesTeamOne++;
} else if (letter.equals("O")) {
teamOnePoints += 1;
playedGamesTeamOne++;
} else if (letter.equals("N")) {
teamCounter++;
}

} else {
if (firstTimeTeam2) {
teamTwoName = keyboard.next();
firstTimeTeam2 = false;
}
String letter = keyboard.next();
if (letter.equals("W")) {
teamTwoPoints += 2;
playedGamesTeamTwo++;
} else if (letter.equals("L")) {
playedGamesTeamTwo++;
} else if (letter.equals("O")) {
teamTwoPoints += 1;
playedGamesTeamTwo++;
} else if (letter.equals("Q")) {
teamCounter++;
}
}
}
System.out.println(teamOneName + " has played " + playedGamesTeamOne + " games and has earned " + teamOnePoints + " points");
System.out.println(teamTwoName + " has played " + playedGamesTeamTwo + " games and has earned " + teamTwoPoints + " points");
if (teamOnePoints > teamTwoPoints) {
System.out.println(teamOneName + " is in first place by " + (teamOnePoints-teamTwoPoints) + " points");
} else {
System.out.println(teamTwoName + " is in first place by " + (teamTwoPoints-teamOnePoints) + " points");
}

最新更新