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);这句话来给每个数组元素赋值啊,我以为是方法返回的问题呢,谢谢大家的指教 展开
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);这句话来给每个数组元素赋值啊,我以为是方法返回的问题呢,谢谢大家的指教 展开
4个回答
展开全部
其实你的想法并没有错,你是可以这样获得随机整数数组,使用方法返回值的写法也没错。错在你弄错了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] + " ");
}
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] + " ");
}
展开全部
很怀疑楼主怎么给数组元素赋值的,我怎么看着第一个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 + " ");
}
}
}
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 + " ");
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
语法没有问题, 是有个地方写错啦造成的。
把如下这个循环
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] + " ");
}
把如下这个循环
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] + " ");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for (int i : randomAarry)
问题出在这里啦 for的这种用法是将randomAarry数组中每个值都依次赋给i randomAarry还没初始化的 默认都是0 所以从始至终你随即出来的数都存在randomAarry[0]里面
你改成for(int i=0;i<randomAarry.length;i++)就行啦
方法返回? 你的意思是? 详细说下吧
问题出在这里啦 for的这种用法是将randomAarry数组中每个值都依次赋给i randomAarry还没初始化的 默认都是0 所以从始至终你随即出来的数都存在randomAarry[0]里面
你改成for(int i=0;i<randomAarry.length;i++)就行啦
方法返回? 你的意思是? 详细说下吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |