【问题标题】:Java: Searching through 2D array for multiple valuesJava:在二维数组中搜索多个值
【发布时间】:2017-10-09 21:23:12
【问题描述】:

好的,我创建了一个可以有两种类型的船 S 和 M 的板子,但是,当板子只包含 S 但没有 M 或只有 M 但没有 S 或两者都包含时,我希望 java 向我显示不同的消息展示。我无法做到这一点。请帮忙。这是我迄今为止尝试过的

import java.util.ArrayList;
import java.util.Scanner;


public class bord {
    public static void main(String[] args) {
        String Board[][]= new String[4][4];
        int n=0;
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<4;j++)
            {
                Board[i][j]="-";

            }
        }
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<4;j++)
            {
                System.out.print(Board[i][j]);
            }
            System.out.println();
        }
        System.out.println("_______________");

             //from here!
        Board[1][1]="S";
        Board[3][2]="M";

        int a=0;
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<4;j++)
            {
                if(Board[i][j].equalsIgnoreCase("S") && !Board[i][j].equalsIgnoreCase("M"))
                {

                    a=1;

                }
                else if(Board[i][j].equalsIgnoreCase("M") &&  !Board[i][j].equalsIgnoreCase("S"))
                    {
                        a=2;

                    }
                else if(Board[i][j].equalsIgnoreCase("S") || Board[i][j].equalsIgnoreCase("M") )
                        a=3;

            }

        }
        if(a==0)
        {
            System.out.println("No ship found");
        }
        else if(a==1)
            System.out.println("Found it");

    else if(a==2)
        {
        System.out.println("Found it yet again");
        }
    else
        System.out.println("keep playing again");
    }
}

【问题讨论】:

  • 好吧,我会做的是有两个布尔值,如果在板上找到SM,则将它们设置为true...然后根据你想要的构造if statements关闭这些布尔值。

标签: java arrays if-statement multidimensional-array


【解决方案1】:

也许你可以试试这个:

    boolean foundS= false;
    boolean foundM = false;
    for (int i = 0;i < 4;i ++) {
        for (int j = 0;j < 4;j ++) {
            if (Board[i][j].equalsIgnoreCase("S")) {
                foundS = true;
                continue;
            }
            if (Board[i][j].equalsIgnoreCase("M")) {
                foundM = true;
                continue;
            }
        }
    }
    if (foundS && foundM) {
        System.out.println("both");
    } else if (foundS) {
        System.out.println("found S");
    } else if (foundM) {
        System.out.println("found M");
    } else {
        System.out.println("none");
    }

【讨论】:

  • 我更喜欢布尔值的名称 foundSfoundM,但总体思路是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 2016-07-12
  • 2011-08-26
相关资源
最近更新 更多