作者:x囚徒已然初年 | 来源:互联网 | 2023-05-17 12:29
为什么用foreach对二维数组输入后,再用它就不能正确的显示呢、显示结果都为0.。importjava.util.*;publicclassTest{publicstaticvoi
为什么用foreach对二维数组输入后,再用它就不能正确的显示呢、显示结果都为0.。
import java.util.*;
public class Test{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
int[][] arry = new int[2][3];
/* 一维数组遍历的第一种方式
//输入数据
for(int i =0;i < arry.length;i++){
for(int j = 0;j
arry[i][j] = s.nextInt();
}
}
//输出数据
for(int i = 0;i
for(int j = 0;j System.out.printf("%5d",arry[i][j]);
}
*/
// 二维数组遍历的第二种方式
//这就是把二维数组降维使用,将二维数组看做一个一维数组。然后每个元素都是一个一维数组
//输入数据
for(int[] i :arry){
for(int j :i){
j = s.nextInt();
}
}
//输出数据
for(int[] i :arry){
for(int j :i){
System.out.println(j);
}
}
}
}
9 个解决方案
for(int[] i :arry){
for(int j :i){
j = s.nextInt();
}
}
这样肯定不行了,内循环改为
for(int j=0;j i[j] = s.nextInt();
}
您说的是输入的还是输出的呢?我想问的是输入的时候用foreach是把每个元素都存在数组中了吗?然后群殴再用同样的方式取出来为什么又不可以了呢
使用foreach循环迭代时:
对于基本类型变量,相当于复制了一份值给迭代变量,迭代变量和元素是独立的,所以不能改变元素的值
数组类型不是引用类型吗?还是说读取数据的内层foreach循环存取的值都是一个int类型,就知识相当于拷贝了一份,。?而不能改变值的大小???
我的理解是虽然数组类型是引用类型,但是里面的每个元素都是基本数据类型,对于基本数据类型,foreach 复制了一份值给迭代变量,在 foreach 中的操作是对迭代变量的操作,所以原来的内容不会变化
一般情况下是不会在 foreach 中修改内容的
增强for循环一般只用于遍历数组或者集合!不能再增强for循环中修改删除数据!
//输入数据
for(int[] i :arry){
for(int j :i){
j = s.nextInt();
}
}
这样也没有将数据存入数组啊!i[]数组将值赋给j,而你又将从控制台输入的值赋给j,你只是将值赋给 j 覆盖了 j 原来的值,并没有改变数组值啊!所以输出的都是默认值0。