String[][] str = new String[5][5];
        str[0][0]= "000";
        str[0][1]= "111";
        str[0][2]= "222";
        str[0][3]= "333";
        str[0][4]= "444";
        str[1][0]= "555";
        str[1][1]= "666";
        str[1][2]= "777";
        str[1][3]= "888";        
        str[1][4]= "999";
        for (int i = 0; i < str.length; i++)
        {
            for (int j = 0; j< str.length; j++)
            {
               if(null != str[i][j])
               {
                   System.out.println("["+i+"]" +"["+ j+"]");
                   System.out.println("["+str[i][j]+"]");
               }
            }
        }

解决方案 »

  1.   

    效率方面是没法提高了。。除非在C里用while循环效率高点循环部分可以用foreach代码比较整洁
    for (String[] strings : str) {
    for (String string : strings) {
    System.out.println(string);
    }
    }
      

  2.   

    LZ要求的“好”的标准是什么?如果单纯考虑算法复杂度可以这样写: String[][] str = new String[5][5];
    str[0][0] = "000";
    str[0][1] = "111";
    str[0][2] = "222";
    str[0][3] = "333";
    str[0][4] = "444";
    str[1][0] = "555";
    str[1][1] = "666";
    str[1][2] = "777";
    str[1][3] = "888";
    str[1][4] = "999";
    for (int i = 0; i < 25; i++)
    if (str[i / 5][i % 5] != null) {
    System.out.println("[" + i / 5 + "][" + i % 5 + "]");
    System.out.println("[" + str[i / 5][i % 5] + "]");
    }另外,Java实质上没有多维数组,建议LZ不要纠结这个问题,以免捡了芝麻丢了西瓜。
      

  3.   

    RE:5L, 因为现在做的东西返回值是个二维数组,因为数据量相对较大,所有我就随手写了一个循环去取;        我也没有更好方法,就随手写了一个直观代码去实现。        java的二维数组其实我几乎没有用过,只是看到之后会用罢了。不过还是非常感谢。