我正在创建一个名为SOS的游戏。这是一款3x3的棋盘游戏,与Tic-Tac-Toe的概念相同,但在这款游戏中,玩家不能选择是X还是O,游戏中唯一的规则是形成"SOS“。
我们的程序应该在所有位置都填满后终止,每个形成的"SOS“将被添加到形成"SOS”的玩家中。
我的问题是关于得分。在第一行输入(- - -)后,我尝试在第二行第一列输入"O“,播放器2将递增。它不应该递增,因为在我的程序中,它不满足第二个else if。为什么会发生这种情况?
下面是我的代码:
import java.util.Scanner;
public class SOS
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String ar[] = {"-","-","-","-","-","-","-","-","-"};
int player1 = 0;
int player2 = 0;
int index = 0;
for(int l = 0; l<3; l++)
{
for(int j = 0; j<3; j++)
{
System.out.print(ar[j]);
}
System.out.print("\n");
}
for(int j = 0;j < 9;j++)
{
//Input position and letter
System.out.println("Enter the position number: ");
index = input.nextInt();
input.nextLine();
System.out.println("Enter (S or O): ");
ar[index - 1] = input.nextLine();
//Output for the game
for(int l = 0; l<9; l++)
{
System.out.print(ar[l]);
if(l == 2)
{
System.out.println();
}
else if(l == 5)
{
System.out.println();
}
else if(l == 8)
{
System.out.println();
}
}
//condition
if((ar[0]+ar[1]+ar[2]).equals("SOS"))
{
if(j%2 == 0)
{
player1++;
System.out.println("Player 1: "+player1+" Player 2: "+player2);
}
else if( j % 2 != 0)
{
player2++;
System.out.println("Player 1: "+player1+" Player 2: "+player2);
}
}
else if((ar[3]+ar[4]+ar[5]).equals("SOS"))
{
if(j%2 == 0)
{
player1++;
System.out.println("Player 1: "+player1+" Player 2: "+player2);
}
else if( j % 2 != 0)
{
player2++;
System.out.println("Player 1: "+player1+" Player 2: "+player2);
}
}
else
{
System.out.println("Player 1: "+player1+" Player 2: "+player2);
}
//end of condition
}
}
}发布于 2013-08-29 00:07:46
错误发生在代码的这一部分中:
if((ar[0]+ar[1]+ar[2]).equals("SOS")) 在第一个玩家正确地将SOS输入到这些位置之后,这句话将永远是正确的。这意味着嵌套的if/else在每一轮都会运行:
if(j%2 == 0)
{
player1++;
}
else if( j % 2 != 0)
{
player2++;
}在第四回合中,j将等于3。(j%2 != 0)为真,这将递增player2。
如果您继续运行该程序,您将看到player1和player2在每个转弯时都不断递增,因为初始的If始终为真。
https://stackoverflow.com/questions/18491420
复制相似问题