0

您好,我的二维数组列正在打印两次。请帮助我识别错误的代码。以下是我尝试过的:

public class ArrayExercise {
public static void main(String[] args){


    String[][] myArray = {
        {"Philippines", "South Korea", "Japan", "Israel"}, // Countries
        {"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities
    };

    String outputString = String.format("%16s\t%9s", "Country", "City" );
    System.out.println(outputString);

    for( int col = 0; col < myArray[0].length; ++col ){
        for( int row = 0; row < myArray.length; ++row ){  
           System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );
        }         
        System.out.println();         
    }
  }

}

这让我发疯,我似乎找不到错误:(

4

8 回答 8

2

在您的内部循环中,您正在打印这两行:- myArray[0][col], myArray[1][col]

然后你使用内循环迭代那个东西两次: -

    for( int row = 0; row < myArray.length; ++row ){  
       System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );
    } 

您需要删除此内部循环:-

for( int col = 0; col < myArray[0].length; ++col ){

    System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );

    System.out.println();         
}
于 2012-10-04T12:22:15.133 回答
0

你有一个 for 循环太多,我删除了最里面的一个,它按预期工作。

public static void main(String[] args){


    String[][] myArray = {
        {"Philippines", "South Korea", "Japan", "Israel"}, // Countries
        {"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities
    };

    String outputString = String.format("%16s\t%9s", "Country", "City" );
    System.out.println(outputString);

    for( int col = 0; col < myArray[0].length; col++ ){
        System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );
        System.out.println();         
    }
}  
于 2012-10-04T12:33:24.210 回答
0

考虑您的 Array 不像棋盘,您必须访问每一行的每一列才能访问每个方格,而更像是一个橱柜。

你知道有多少列。(二)

因此,您只需遍历第一列中的国家数量,并在第二列中检查每个条目的资本是多少。

于 2012-10-04T12:34:52.140 回答
0

删除内部循环,因为您实际上不需要它来完成您要完成的工作:

for ( int col = 0; col < myArray[0].length; ++col ) {
  System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]);
  System.out.println();
}

也就是说,对于每个国家 ( myArray[0][col]),打印其首都 ( myArray[1][col])。

于 2012-10-04T12:20:14.773 回答
0

内循环使它打印两次。你从不使用row.

for( int col = 0; col < myArray[0].length; ++col ){
    System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );
    System.out.println();         
}
于 2012-10-04T12:21:54.363 回答
0

代码循环两次,同时打印相同的内容。删除内部 for 循环。

于 2012-10-04T12:22:27.063 回答
0

用这个:

System.out.printf( "%16s\t", myArray[row][col]  );

代替:

System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );

您正在打印这两行:-myArray[0][col], myArray[1][col]

于 2012-10-04T12:22:42.833 回答
0

你的“myArray.length”是两个。因此,代码两次通过内部“for”循环。循环变量“row”从不在内部“for”中使用。因此,相同的东西被打印了两次。

取出内在的“为”。

于 2012-10-04T12:23:58.573 回答