Java 比较字符串的二维数组
我有一个方法,可以生成一个二维字符串数组,然后将它们放在Java 比较字符串的二维数组,java,arrays,Java,Arrays,我有一个方法,可以生成一个二维字符串数组,然后将它们放在ArrayList中。我正在尝试编写一个方法,该方法采用一个新的2D数组,并将其与数组中已存在的数组进行比较,以进行复制。这就是我到目前为止所知道的,对于一个新的解决方案,它应该返回true,但每次都返回false。调用方法打印出数组,我可以看到它们不一样 public static boolean tester(String[][] b, ArrayList<String[][]> s) { if (s.size()
ArrayList
中。我正在尝试编写一个方法,该方法采用一个新的2D数组,并将其与数组中已存在的数组进行比较,以进行复制。这就是我到目前为止所知道的,对于一个新的解决方案,它应该返回true
,但每次都返回false
。调用方法打印出数组,我可以看到它们不一样
public static boolean tester(String[][] b, ArrayList<String[][]> s)
{
if (s.size() == 1) return true;
boolean n = true;
int count;
int size = b.length * b[0].length;
for (int i = 0; n && i < s.size() -1; i ++)
{
count = 0;
for (int j = 0; j < s.get(i).length; j ++)
for (int k = 0; k < s.get(i)[0].length; k ++)
if (s.get(i)[j][k].equals(b[j][k])) count ++;
if (count == size) n = false;
}
return n;
}
公共静态布尔测试仪(字符串[][]b,数组列表s)
{
如果(s.size()==1)返回true;
布尔n=真;
整数计数;
int size=b.length*b[0]。长度;
对于(int i=0;n&&i
您的代码可以通过以下方式简化:
它被解释为:
for (int j = 0; j < s.get(i).length; j ++){
for (int k = 0; k < s.get(i)[0].length; k ++){
if (s.get(i)[j][k].equals(b[j][k])) count ++;
}
}
if (count == size) n = false;
for(int j=0;j
从缩进判断,这很可能不是您的意图,但在java中,除了分隔标记外,空白(包括缩进)并没有太大意义。编译器就是这样解释代码的:
for (int i = 0; n && i < s.size() -1; i ++)
{
count = 0;
for (int j = 0; j < s.get(i).length; j ++) {
for (int k = 0; k < s.get(i)[0].length; k ++) {
if (s.get(i)[j][k].equals(b[j][k])) count ++;
}
}
if (count == size) n = false;
}
但你也可以写:
public static boolean tester(String[][] b, ArrayList<String[][]> s)
{
// ..
for (int i = 0; n && i < s.size() -1; i ++) {
for (int j = 0; j < s.get(i).length; j ++) {
for (int k = 0; k < s.get(i)[0].length; k ++) {
if (s.get(i)[j][k].equals(b[j][k]) == false) {
return true;
}
}
}
}
return false;
}
公共静态布尔测试仪(字符串[][]b,数组列表s)
{
// ..
对于(inti=0;n&&i
“字符串的双数组”称为二维数组,简称2d数组。编程中的术语double
为double
类型“保留”。与你的回答/问题无关,但我必须仔细阅读其中的一些句子,以确保我正确地理解了它;)如果您理解该写操作,那么当它与arraylist中的任何一个2D数组不匹配时,它是否会停止并返回“false”?我需要它来查看整个列表。deep.equals的解决方案仍然每次返回一个false…我开始怀疑代码中的其他地方是否发生了奇怪的事情;但是,当我将每个2D数组添加到arraylist时,我会打印出来,我可以看到它们不一样,所以我不知道它可能是什么。嘿,谢谢你的帮助。这实际上是程序中其他地方的一个问题——arraylist中完全充满了对相同d2d Darray的引用。
for (int i = 0; n && i < s.size() -1; i ++)
{
count = 0;
for (int j = 0; j < s.get(i).length; j ++) {
for (int k = 0; k < s.get(i)[0].length; k ++) {
if (s.get(i)[j][k].equals(b[j][k])) count ++;
}
}
if (count == size) n = false;
}
for (int i = 0; n && i < s.size() -1; i ++)
{
count = 0;
for (int j = 0; j < s.get(i).length; j ++) {
for (int k = 0; k < s.get(i)[0].length; k ++) {
if (s.get(i)[j][k].equals(b[j][k])) {
count ++;
}
if (count == size) {
n = false;
}
}
}
}
public static boolean tester(String[][] b, ArrayList<String[][]> s)
{
// ..
for (int i = 0; n && i < s.size() -1; i ++) {
for (int j = 0; j < s.get(i).length; j ++) {
for (int k = 0; k < s.get(i)[0].length; k ++) {
if (s.get(i)[j][k].equals(b[j][k]) == false) {
return true;
}
}
}
}
return false;
}