java方法返回数组的问题

我的代码如下:publicclassTest{publicint[]getRandomAarry(finalintsize){int[]randomAarry=newin... 我的代码如下:
public class Test {
public int[] getRandomAarry(final int size) {
int[] randomAarry = new int[size];
for (int i : randomAarry) {
randomAarry[i] = new Random().nextInt(100);
System.out.print(randomAarry[i] + " ");
}
return randomAarry;
}
public static void main(String[] args) {
Test test = new Test();
int [] a = test.getRandomAarry(10);
System.out.println();
for (int i : a) {
System.out.print(i + " ");
}
}
}
我是想通过getRandomAarry来得到一个随机数数组,并且在main方法中赋值给新的数组,但是为什么不行呢,得到的结果是这样的:
67 10 51 51 16 30 1 83 85 35
35 0 0 0 0 0 0 0 0 0
趁此机会,那位大侠给我详细讲讲Java方法返回的问题呗。
谢谢大家的回答,以前没太用过foreach,oyster_k 说我没初始化,但是我的代码中有 randomAarry[i] = new Random().nextInt(100);这句话来给每个数组元素赋值啊,我以为是方法返回的问题呢,谢谢大家的指教
展开
 我来答
sullivanbs
2010-08-15 · TA获得超过179个赞
知道答主
回答量:60
采纳率:0%
帮助的人:44.3万
展开全部
其实你的想法并没有错,你是可以这样获得随机整数数组,使用方法返回值的写法也没错。错在你弄错了for-each的用法,才导致你获得的结果不正确。

for-each的用法如下:
for(type Var:Object){}

这里type表示类型,Var表示type类型的一个遍量,而Object则是一个容纳type类型的数组。再循环体内部,Var每次都表示Object中的一个type类型的元素,直到从第一个元素到最后一个元素都循环完,就退出循环体了。

所以,for (int i : randomAarry)这句相当于
for(int j=0;j<randomAarry.length;int i=randomArray[j])

但是由于randomArray是通过声明语句声明的一个int型数组,而并没有显式的初始化,所以按照默认的隐式初始化,所有数组元素初始值都为0,也就是楼上一位仁兄说的,你的这段循环是不停的在给randomArray[0]进行随机赋值,所以最后得到的数组,只有第一个元素被正确的随机赋值了,而其余元素仍然是初始值0。

所以修改一下那个循环体,你的结果就会正确了。
不妨改成一楼仁兄的写法:
for (int i=0;i<randomAarry.length;i++){
randomAarry[i] = new Random().nextInt(100);
System.out.print(randomAarry[i] + " ");
}
百度网友9d68adc
2010-08-15 · TA获得超过2395个赞
知道小有建树答主
回答量:1210
采纳率:0%
帮助的人:732万
展开全部
很怀疑楼主怎么给数组元素赋值的,我怎么看着第一个foreach循环是错误的呢
ps:java中的缩进个人一直用table键 没用过空格

改了一下
import java.util.Random;

public class Test{
public int[] getRandomAarry(final int size){
int[] randomAarry = new int[size];
for (int i=0;i<randomAarry.length;i++){
randomAarry[i] = new Random().nextInt(100);
System.out.print(randomAarry[i] + " ");
}
return randomAarry;
}
public static void main(String[] args){
Test test = new Test();
int [] a = test.getRandomAarry(10);
System.out.println();
for (int i : a){
System.out.print(i + " ");
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
startfromheart
2010-08-15 · 超过19用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:33.3万
展开全部
语法没有问题, 是有个地方写错啦造成的。
把如下这个循环
for (int i : randomAarry) {
randomAarry[i] = new Random().nextInt(100);
System.out.print(randomAarry[i] + " ");
}

改为如下:

int j = 0;
for (int i : randomAarry) {
randomAarry[j] = new Random().nextInt(100);
System.out.print(randomAarry[j] + " ");
j++;
}

应当就可以啦。

或者改为

for (int i=0; i<randomAarry.size();i++) {
randomAarry[i] = new Random().nextInt(100);
System.out.print(randomAarry[i] + " ");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oyster_k
2010-08-15 · TA获得超过120个赞
知道小有建树答主
回答量:110
采纳率:0%
帮助的人:127万
展开全部
for (int i : randomAarry)
问题出在这里啦 for的这种用法是将randomAarry数组中每个值都依次赋给i randomAarry还没初始化的 默认都是0 所以从始至终你随即出来的数都存在randomAarry[0]里面
你改成for(int i=0;i<randomAarry.length;i++)就行啦
方法返回? 你的意思是? 详细说下吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式