Java 有关数组的问题,请教各位

gamedev˚ 2016-05-12 12:26:18
我想实现在控制台输入一些数字,组成我想要的数组:
		int b[]={};
for(int e:b){
e=in.nextInt();
}

但是这样好像行不通,是为什么?
...全文
232 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcqm8888 2016-07-07
  • 打赏
  • 举报
回复
jawa,我不明白,高人出来说说吧。
gamedev˚ 2016-05-14
  • 打赏
  • 举报
回复
引用 12 楼 crazyman28 的回复:
主要是数组长度为0。。相当于没有,你赋值自然无效了。 foreach的用法没有问题。比如: int[] arr= {1,2,3,4,5}; for(int k:arr) System.out.println(k); //此处的k就是数组元素a[0],a[1].... 相当于: int[] arr= {1,2,3,4,5}; for(int i=0; i<arr.length; i++) { int k = arr[i]; System.out.println(k); }
不是这个原因,我测试过了。 是因为foreach语句中,我用e数组代替原数组,把值传给了e数组,而我最后输出原数组的时候,值还是没改变,仍为0。因为我改变的只是e数组。而如果直接用for循环来做的时候,传值的时候,就会直接传给原数组,因为也就像一楼的代码那样,原数组中德值改变了。
qq_26224229 2016-05-13
  • 打赏
  • 举报
回复
引用 2 楼 baidu_33235629的回复:
这样肯定不行, int b[]={}; java里数组的定义格式是这样吗,去把书好好看下, for(int e:b) 这是什么鬼,for循环的格式是这样吗,建议多看点书 你代码里的in.nextInt(),in这个对象是凭空出现的吗是不是要创建一个扫瞄器对象像一楼的那样, 一楼正解
那个for循环他想表达的是高级for循环吧
「已注销」 2016-05-13
  • 打赏
  • 举报
回复
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		int[] array = new int[1024];
		Scanner sc = new Scanner(System.in);
		int i = 0;
		
		while(sc.hasNext()){
			array[i++] = sc.nextInt();
			System.out.println("您输入的数字是:" + array[i-1]);
		}
	}
}
zyw429 2016-05-13
  • 打赏
  • 举报
回复
一楼正解 数组初始化的长度为0,长度不可变,没办法往里边加数据的
爱睡觉的阿狸 2016-05-13
  • 打赏
  • 举报
回复
首先你应该给数组一个初始化长度。java中的数组不是说可以动态增加长度的。 再者,你用foreach对基本数据类型数组进行赋值当然是行不通的啊。 楼主主要的误解是产生在对foreach的理解上。通常foreach是这样for(类型 对象: 数组或集合){。。。},所以foreach的遍历,系统都会先将数组中的值先赋给一个中间变量,你再给中间变量赋值,改变了中间变量的值,但是对原数组中的值毫无影响。 正确的做法应该是先int[] b = new int[给个数值],这样遍历for (int i = 0; i < b.length; i++) { b[i] = 随机值; },汉字你自己替换。 不要int b[]这样写,显得很不专业,要这么写,int[] b。
lxraiyl 2016-05-13
  • 打赏
  • 举报
回复
引用 6 楼 m2200 的回复:
首先你应该给数组一个初始化长度。java中的数组不是说可以动态增加长度的。 再者,你用foreach对基本数据类型数组进行赋值当然是行不通的啊。 楼主主要的误解是产生在对foreach的理解上。通常foreach是这样for(类型 对象: 数组或集合){。。。},所以foreach的遍历,系统都会先将数组中的值先赋给一个中间变量,你再给中间变量赋值,改变了中间变量的值,但是对原数组中的值毫无影响。 正确的做法应该是先int[] b = new int[给个数值],这样遍历for (int i = 0; i < b.length; i++) { b[i] = 随机值; },汉字你自己替换。 不要int b[]这样写,显得很不专业,要这么写,int[] b。
int b[] 这是C++的写法,虽然java也支持,但是一般java更普遍的是int[] b
小灰狼 2016-05-13
  • 打赏
  • 举报
回复
引用 2 楼 baidu_33235629 的回复:
这样肯定不行, int b[]={}; java里数组的定义格式是这样吗,去把书好好看下, for(int e:b) 这是什么鬼,for循环的格式是这样吗,建议多看点书 你代码里的in.nextInt(),in这个对象是凭空出现的吗是不是要创建一个扫瞄器对象像一楼的那样, 一楼正解
int b[] = {}; 可以这么写,不信你自己写个 main 试试 for(int e : b){ } 这是对一个数组元素或Collection 接口的元素进行遍历,也叫迭代,这些写法从 JDK1.5 开始就支持了,而 jdk1.5 至少2008年就已经发布了。不光是 Java、C#也有类似的写法,或者说Java这个写法这是从C#那里整过来的。 自己多看点书
lxraiyl 2016-05-13
  • 打赏
  • 举报
回复
引用 2 楼 baidu_33235629 的回复:
这样肯定不行, int b[]={}; java里数组的定义格式是这样吗,去把书好好看下, for(int e:b) 这是什么鬼,for循环的格式是这样吗,建议多看点书 你代码里的in.nextInt(),in这个对象是凭空出现的吗是不是要创建一个扫瞄器对象像一楼的那样, 一楼正解
你不懂就别乱喷了好么,上来就让别人去多看书。 你连个foreach循环都不懂,你还让别人多看书?是你自己要多看书吧。 数组不能这样定义?int b[]={},你告诉我,哪家培训机构告诉你不能这样定义的?
expiator 2016-05-13
  • 打赏
  • 举报
回复
主要是数组长度为0。。相当于没有,你赋值自然无效了。 foreach的用法没有问题。比如: int[] arr= {1,2,3,4,5}; for(int k:arr) System.out.println(k); //此处的k就是数组元素a[0],a[1].... 相当于: int[] arr= {1,2,3,4,5}; for(int i=0; i<arr.length; i++) { int k = arr[i]; System.out.println(k); }
xu1007518009 2016-05-13
  • 打赏
  • 举报
回复
这样肯定不行, int b[]={}; java里数组的定义格式是这样吗,去把书好好看下, for(int e:b) 这是什么鬼,for循环的格式是这样吗,建议多看点书 你代码里的in.nextInt(),in这个对象是凭空出现的吗是不是要创建一个扫瞄器对象像一楼的那样,
gamedev˚ 2016-05-13
  • 打赏
  • 举报
回复
引用 6 楼 m2200 的回复:
首先你应该给数组一个初始化长度。java中的数组不是说可以动态增加长度的。 再者,你用foreach对基本数据类型数组进行赋值当然是行不通的啊。 楼主主要的误解是产生在对foreach的理解上。通常foreach是这样for(类型 对象: 数组或集合){。。。},所以foreach的遍历,系统都会先将数组中的值先赋给一个中间变量,你再给中间变量赋值,改变了中间变量的值,但是对原数组中的值毫无影响。 正确的做法应该是先int[] b = new int[给个数值],这样遍历for (int i = 0; i < b.length; i++) { b[i] = 随机值; },汉字你自己替换。 不要int b[]这样写,显得很不专业,要这么写,int[] b。
“foreach的遍历,系统都会先将数组中的值先赋给一个中间变量,你再给中间变量赋值,改变了中间变量的值,但是对原数组中的值毫无影响。”这句话说到点子上面了~~
baidu_33235629 2016-05-12
  • 打赏
  • 举报
回复
这样肯定不行, int b[]={}; java里数组的定义格式是这样吗,去把书好好看下, for(int e:b) 这是什么鬼,for循环的格式是这样吗,建议多看点书 你代码里的in.nextInt(),in这个对象是凭空出现的吗是不是要创建一个扫瞄器对象像一楼的那样, 一楼正解
  • 打赏
  • 举报
回复
Scanner s = new Scanner(System.in);
		int a = 0,i=0;
		int[] result = new int[100];
		System.out.println("请输入数字");
		while ((a = s.nextInt()) != -1) {
			result[i++] = a;
		}
		
		for (int j = 0; j < result.length; j++) {
			System.out.println(result[j]);
		}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧