[英]Java: Searching through 2D array for multiple values
好的,我创建了一个可以同时包含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");
}
}
也许您可以尝试以下方法:
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");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.