Java 2D数组列

时间:2012-10-04 11:17:10

标签: java arrays

你好,这只是一个简单的二维数组问题,我想在2列中显示我的2个数组元素,如下所示:

国家城市 Phils Manila
SK首尔 日本东京
以色列耶路撒冷

这是我尝试过的代码:

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


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

        System.out.print( "Countries\tCities\n" );

        for( int row = 0; row < myArray.length; ++row ){
            System.out.print( "" );
            for( int col = 0; col < myArray[row].length; ++col ){

                System.out.print( "" + myArray[row][col] + "\t" );

            }
        }
        System.out.println( "" );
    }

}

但我不能让它显示在2列..任何帮助肯定是赞赏。谢谢你们:))

5 个答案:

答案 0 :(得分:2)

循环浏览myArray[row]后,您不会添加换行符。您需要在循环后添加此内容以打印新行:

System.out.println();

一般情况下,如果您想要换行,请不要拨打System.out.print("\n"),而是System.out.println()System.out.println()使用系统行结尾,它不一定是换行符(\n)。

答案 1 :(得分:2)

更新: - 以下是在2列中打印它们的方法: -

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

    int j = 0;

    while (j < myArray[0].length) {
        System.out.printf("%-15s - %-15s", myArray[0][j], myArray[1][j++]);
        System.out.println();
    }

由于您希望为每列平行打印两行值。
您可以迭代列,并打印该对应列的两行的值。

注意: - 我使用了值15进行格式化。通常,当字符串(国家/地区或城市)的长度大于该值时,可能会给您错误的结果..

对于更多改进,您可以将15替换为最长country string和最长city string的长度,来自两行..

答案 2 :(得分:1)

如何先迭代col然后再行..

for( int col = 0; col < myArray[0].length; ++col ){
            for( int row = 0; row < myArray.length; ++row ){
                System.out.print(myArray[row][col]);
                System.out.print("\t");
            }
            System.out.println();
        }

<强>解释

你的二维数组就像那样

  • 菲律宾[0,0]韩国[0,1]日本[0,2]以色列[0,3]

  • 马尼拉[1,0]首尔[1,1]东京[1,2]耶路撒冷[1,3]

但你想要的是[row,col]是以前的索引。

  • 菲律宾[0,0]马尼拉[1,0]
  • 韩国[0,1]首尔[1,1]
  • 日本[0,2]东京[1,2]
  • 以色列[0,3]耶路撒冷[1,3]

所以用列迭代outerloop。 在内部循环内,迭代行并使用“\ t”分隔。 在内循环之后,我打印一个新行。

答案 3 :(得分:1)

如果你确定你只处理两个等长的列表:

public class ArrayExercise {
    public static void main(String[] args){
        String[][] data = {
            {"Philippines", "South Korea", "Japan", "Israel"}, // Countries                                                                                                                                                 
            {"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities                                                                                                                                                    
        };

        System.out.print("Countries\tCities\n");
        int colLength = data[0].length;
        for (int i = 0; i < colLength; ++i) {
            System.out.printf("%s\t%s\n", data[0][i], data[1][i]);
        }
    }
}

这将给出(标签式)输出:
国家城市
菲律宾马尼拉
韩国首尔
日本东京
以色列耶路撒冷

答案 4 :(得分:0)

首先,您需要找出第一列(国家/地区)中最长元素的长度,比如最大长度为5,并且您希望每行都有一个前导空格。而且你还需要找到第二列的最大长度,比如说它是8.完成后,你可以使用String.format打印元素:

outputString = String.format("%1$6s %2$8s\n",country, city);
System.out.println(outputString);

格式化程序将第一个参数的宽度设置为X,因此您将获得正确的缩进。这将使用任何长度的字符串。