Java SOS游戏:Tic Tac Toe的概念

Java SOS游戏:Tic Tac Toe的概念,java,Java,我正在制作一个名为SOS的游戏。这是一款3x3的棋盘游戏,与Tic-Tac-Toe的概念相同,但在这款游戏中,玩家无法选择是以X还是O的身份进行游戏,在这款游戏中唯一的规则是形成“SOS” 我们的计划应该在所有职位被填补后终止,每个组成的“SOS”将被添加到组成“SOS”的玩家中 我的问题是得分。在第一行输入SOS后,即(--),我尝试在第二行第一列输入“O”,播放器2将递增。它不应该递增,因为它不满足我程序中的第二个else if。为什么会这样 这是我的密码: import java.util

我正在制作一个名为SOS的游戏。这是一款3x3的棋盘游戏,与Tic-Tac-Toe的概念相同,但在这款游戏中,玩家无法选择是以X还是O的身份进行游戏,在这款游戏中唯一的规则是形成“SOS”

我们的计划应该在所有职位被填补后终止,每个组成的“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

  }
  }
  }
import java.util.Scanner;
公共级SOS
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
字符串ar[]={-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”};
int player1=0;
int player2=0;
int指数=0;

对于(int l=0;l,错误发生在代码的这一部分:

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始终为真。

在第一个条件中,您有一个2!可能这是错误的…!!(ar[0][0]。equalsIgnoreCase(“”)您对可以链接到的游戏有更深入的解释吗(可能是一个或两个示例回合)?我不确定我是否理解这里的约束条件。您的代码上有一个双重否定:
!!(ar[0][0]。equalsIgnoreCase(“”)
…尝试修复它哦,我明白了。那么我如何修复它呢?