Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java2Dimensional字符串数组:查找所有元素都相同的列_Java_Arrays_String_For Loop_2d - Fatal编程技术网

Java2Dimensional字符串数组:查找所有元素都相同的列

Java2Dimensional字符串数组:查找所有元素都相同的列,java,arrays,string,for-loop,2d,Java,Arrays,String,For Loop,2d,我很确定这个问题已经被问到了,但我似乎找不到一个解决问题的办法 我得到了一个二维字符串数组 String[][] available = new String[10][15]; 数组包含单词:ok和no,每个元素之间有一个选项卡。这就是它的样子: ok ok no ok ok no ok ok ok no no no ok ok ok ok no ok no ok ok ok no ok ok no ok ok no ok ok ok

我很确定这个问题已经被问到了,但我似乎找不到一个解决问题的办法

我得到了一个二维字符串数组

String[][] available = new String[10][15];
数组包含单词:ok和no,每个元素之间有一个选项卡。这就是它的样子:

ok  ok  no  ok  ok  no  ok  ok  ok  no  no  no  ok  ok  ok
ok  no  ok  no  ok  ok  ok  no  ok  ok  no  ok  ok  no  ok
ok  ok  ok  ok  no  no  no  no  no  ok  no  ok  ok  no  ok
ok  no  ok  ok  no  no  no  no  no  ok  no  ok  ok  no  ok
no  no  ok  ok  no  no  no  no  no  ok  no  ok  ok  ok  ok
ok  ok  ok  ok  no  ok  no  no  no  ok  no  ok  ok  no  ok
现在有多个列,其中整个列都用ok填充。 实际上,我只需要第一列,其中每个元素都是ok的

该字符串稍后可能会被扩展,因此我需要将其放在具有.length的for循环中 此代码打印出正确的列,但问题是当扩展数组时,此代码将不起作用:

    for (int r =0; r < 10; r++){
        for (int k = 0; k < 15; k++){
            if ( "ok" == poll[r +0][k] && 
                 "ok" == poll[r +1][k] &&
                 "ok" == poll[r +2][k] &&
                 "ok" == poll[r +3][k] && 
                 "ok" == poll[r +4][k] &&
                 "ok" == poll[r +5][k] &&
                 "ok" == poll[r +6][k] &&
                 "ok" == poll[r +7][k] &&
                 "ok" == poll[r +8][k] &&
                 "ok" == poll[r +9][k] ){
                System.out.println(k);
            }            
        }
    }
for(int r=0;r<10;r++){
对于(int k=0;k<15;k++){
如果(“确定”==轮询[r+0][k]&&
“确定”==poll[r+1][k]&&
“确定”==投票[r+2][k]&&
“确定”==投票[r+3][k]&&
“确定”==投票[r+4][k]&&
“确定”==投票[r+5][k]&&
“确定”==投票[r+6][k]&&
“确定”==投票[r+7][k]&&
“确定”==投票[r+8][k]&&
“确定”==poll[r+9][k]){
系统输出println(k);
}            
}
}

我不完全确定我是否理解了您的问题,但这应该是可行的(尽管可能有更好的算法用于此任务)

int计数器=0;
对于(int行=0;行<10;行++){
for(int col=0;col<15;col++){
如果(可用[行][col].equals(“ok”)==false)中断;
else计数器++;
}
如果(计数器==15)返回行;
}
返回-1;//没有行将*all*列设置为“是”
如果要计算发生这种情况的行数(而不是第一行),只需添加一个额外的计数器并在末尾返回它


虽然,就像@thatguy说的,你最好使用布尔矩阵。

我不完全确定我是否理解你的问题,但这应该有效(尽管可能有更好的算法来完成这项任务)

int计数器=0;
对于(int行=0;行<10;行++){
for(int col=0;col<15;col++){
如果(可用[行][col].equals(“ok”)==false)中断;
else计数器++;
}
如果(计数器==15)返回行;
}
返回-1;//没有行将*all*列设置为“是”
如果要计算发生这种情况的行数(而不是第一行),只需添加一个额外的计数器并在末尾返回它


虽然,就像@thatguy所说的,你最好使用布尔矩阵。

你可以这样做:

int columnNumber = -1;    

for (int column = 0; column < available.length; column++) {

    boolean columnYes = true;        

    for (int row = 0; row < available.length; row++) {
        if (!available[row][column].equals("yes")) {
            columnYes = false;
        }
    }

    if (columnYes) {
        columnNumber = column;
        break;
    }
}
int columnNumber=-1;
for(int column=0;column
此代码将搜索所有元素均为“是”的第一列,并返回其索引,用于列编号写入
列编号=列+1。如果没有此类列,则会得到
-1
。请记住,要使上述代码正常工作,所有列的大小必须相等


你还应该考虑制作你的数组<代码>布尔[]]/COD>或<代码> EnUM <代码> >代码>选择[]/Cord>,并根据它的值在单独的函数中返回<代码>字符串<代码>,而不是一遍遍地存储相同的字符串,这会消耗很多内存,并且不能轻易更改。此外,在这种情况下比较字符串只会不必要地降低性能。

您可以这样做:

int columnNumber = -1;    

for (int column = 0; column < available.length; column++) {

    boolean columnYes = true;        

    for (int row = 0; row < available.length; row++) {
        if (!available[row][column].equals("yes")) {
            columnYes = false;
        }
    }

    if (columnYes) {
        columnNumber = column;
        break;
    }
}
int columnNumber=-1;
for(int column=0;column
此代码将搜索所有元素均为“是”的第一列,并返回其索引,用于列编号写入
列编号=列+1。如果没有此类列,则会得到
-1
。请记住,要使上述代码正常工作,所有列的大小必须相等


你还应该考虑制作你的数组<代码>布尔[]]/COD>或<代码> EnUM <代码> >代码>选择[]/Cord>,并根据它的值在单独的函数中返回<代码>字符串<代码>,而不是一遍遍地存储相同的字符串,这会消耗很多内存,并且不能轻易更改。此外,在这种情况下,比较字符串只会不必要地降低性能。

中断的作用是什么?这将输出列所有元素都是“否”的。实际上,我只需要那些带有ok的。关于原始问题,您还不是很清楚,但是该方法应该做的是迭代矩阵,并返回其所有列都为“是”(或“ok”或w/e)的行的第一个索引。如果检测到“否”,则中断第二个循环。中断的作用是什么?此wil输出列中的所有元素都是“否”。实际上,我只需要那些带有ok的。关于原始问题,您还不是很清楚,但是该方法应该做的是迭代矩阵,并返回其所有列都为“是”(或“ok”或w/e)的行的第一个索引。如果检测到“否”,则中断第二个循环.列号类似于每个人都有空的日期。我需要每个人都有空的第一次约会。所以我只需要第一个专栏抱歉,我对编程很陌生,我不知道