Java 2d数组列正在打印两次

时间:2012-10-04 12:18:00

标签: java arrays string

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

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();         
    }
  }

}

这让我疯了,我似乎无法找到错误:(

8 个答案:

答案 0 :(得分: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();         
}

答案 1 :(得分: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])。

答案 2 :(得分: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();         
}

答案 3 :(得分:0)

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

答案 4 :(得分: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]

答案 5 :(得分:0)

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

取出内心的“for”。

答案 6 :(得分: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();         
    }
}  

答案 7 :(得分:0)

考虑到你的数据不像棋盘,你必须访问每一行的每一列才能访问每个方块,但更像是一个橱柜。

你知道有多少列。 (2)

因此,您只需循环第一列中的数量,并在每个条目的第二列中检查资本是什么。