Java关于二维数组遍历的问题

Java小白一只,今天自学的时候遇到一点关于二维数组遍历的问题,百度不到,只好来知道求各位大神解答。代码如下
public class Test {

public static void main(String[] args) {
int a[][]={{1,3},{4,2}};
System.out.println("数组中的元素是:");
for(int x[]:a){
for(int e:x){
if(e==x.length){
System.out.print(e);
}else
System.out.print(e+"、");
}
}

}

}
此时控制台输出是
数组中的元素是:
1、3、4、2
而我把数组改成a={{1,2},{4,8}};
控制台输出就变成了:
数组中的元素是:
1、24、8、
请问这是什么情况,苦恼了半天了,他遍历是怎么个遍历法,有什么顺序吗?求各位大神指点!

int a[][] = {{1, 8}, {0, 4}};
for (int x[] : a) {
    for (int y : x) {
        LogUtil.e(y + ",");
    }
}

上边是我用Android写的 你把LogUtil换成System.out.print(y+";");

你的代码里面为啥要加上if(e==x.length)这个判断?没看懂

追问

就是让输出的时候最后一个元素后面没有“、”,而其他元素后面有
代码没啥问题 但数组如果发生改变就会出现类似问题
数组改成{{1, 8}, {0, 4}}之后 输出变成了:
数组中的元素是:
1、8、0、4、
请问这个顿号是控制不了的吗..想把最后一个顿号给去掉 结果顿号太调皮...

追答

这个需求下就不能使用foreach了 你需要知道下标的

int a[][] = {{1, 2,3,4}, {5, 6}};
for (int i = 0; i < a.length; i++) {
    int []b = a[i];
    for (int j = 0; j < b.length; j++) {
        if (i == a.length -1 && j == b.length -1) {
            System.out.print(b[j]+"");
        } else {
            System.out.print(b[j]+";");
        }
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-06
只有2才等于它本身if(e==x.length){
System.out.print(e);所以输出 没有省略号,其他都是输出System.out.print(e+"、");
所以带省略号本回答被提问者采纳
第2个回答  2017-04-10
if (e == x.length) 这句不对
int a[][] = { { 1, 2 }, { 4, 8 } };
System.out.println("数组中的元素是:");
String test = "";
for (int i = 0; i < a.length; i++) {
for (int e : a[i]) {
test += e + "、";
}
}
System.out.println(test.substring(0, test.length() - 1));
第3个回答  2017-11-06
int arr2[][]={{1,2},{4,8}};
int i=0;
for(int x[]:arr2){
i++;
int j=0;
for(int e:x){
j++;
if(i==arr2.length &&j==x.length){
System.out.println(e);
}else{
System.out.println(e);
}
}
}
试试这个
相似回答