【问题标题】:Storing random values to an array将随机值存储到数组
【发布时间】:2015-02-10 07:24:43
【问题描述】:

修改后的问题: 我希望将数组的偶数元素存储在相应的数组中。我的 if else 语句就是这样做的。由于每次运行总会有不同数量的偶数和赔率,我希望 evenArrayoddArray 的大小随着我的 while 循环的每次迭代而调整。编译时出现错误,提示我没有正确执行该部分。

import java.util.Arrays;
import java.util.Random; 
public class randomdemo { 
    public static int[] randommethod()
    {
        int i = 0;

        int[] myArray;
        myArray = new int[100];

        int[] evenArray;

        int[] oddArray;

        while(i<=99)
        {
            Random rand = new Random();
            int n = rand.nextInt(25) + 0;
            myArray[i] = n;

            if(myArray[i] % 2 == 0)
            {
                evenArray = new int[i];
                evenArray[i] = n;
            }
            else
            {
                oddArray = new int[i];
                oddArray[i] = n;
            }

            i++;
        }

        return myArray;
    }

    public static void main(String args[])
    {
        int[] result = randommethod();
        System.out.println(Arrays.toString(result));
        randommethod();
    }
}

【问题讨论】:

  • 您永远不会要求程序打印任何内容(例如使用println 之类的方法)。因此,预计不会打印任何内容。

标签: java arrays random


【解决方案1】:

返回的数组没有被使用。

所以randommethod() 的返回值是int[],但主要方法不打印它(或以任何方式使用它)。

这是一种使用方法:

int[] outputRandomAry = randommethod();
for (int elem : outputRandomAry) {
  System.out.print(elem + ", ");
}
System.out.println();

您也可能希望将Random rand = new Random(); //using the random class 放在while 循环之外。这可以防止为每个 rand 不必要地剥离新对象。

您可以使用 int n = rand.nextInt(26); 来表示 0(含)到 26(不含)给您所需的范围。

【讨论】:

  • 你能再解释一下吗?
  • @YoungDeezie 我已经编辑了答案以包含更多详细信息。
【解决方案2】:

存储结果,然后打印出来。您可以使用循环或Arrays.toString(int[])。比如,

int[] result = randommethod();
System.out.println(Arrays.toString(result));

当我将这两行都放入 main() 并使用您发布的 randommethod() 时,它似乎可以工作。

【讨论】:

  • 我还有一个关于程序的简短问题。请参阅已编辑的问题。谢谢!
  • Java 数组不是动态大小的数据结构。你不能那样做。您可以将它们的大小设置为与输入相同(并保留空槽)。或者,您可以使用Collection,例如动态的ArrayList&lt;Integer&gt;
【解决方案3】:

如果你只想打印出数组而不存储,这个in ma​​in100% 会起作用。

System.out.println(Arrays.toString(randommethod()));  //print array

在这一行,您返回了值:

return myArray; //returns the array

但是您没有将其存储在任何地方。所以返回值丢失了。即使您完成了方法中的所有工作。

将您的返回数组按如下方式存储在 ma​​in

int[] myArray = randommethod();    //store returned value (from method)

之后,你可以对返回的数组做任何你想做的事情。

【讨论】:

    【解决方案4】:

    除了其他用户提到的东西,如果我是你,我会这样写你的方法:

    public static int[] randommethod()      //declaring method
    {
        Random rnd = new Random();          //using the random class
        int[] myArray = new int[100];       //create and initializing array in 1 line
    
        for(int x=0; x<myArray.length; x++) //Normally use for-loop when you know how many times to iterate
            myArray[x] = rnd.nextInt(26);   //0-25 has 26 possibilities, so just write 26 here
    
        return myArray;                     //returns the array
    }
    

    它会做完全相同的事情,我正在根据您的原始代码进行编辑。

    主要..

    public static void main (String[] args)
    {
        int[] myArray = randommethod();
    }
    

    【讨论】:

      【解决方案5】:

      如果你想要一个介于 0 和 25 之间的随机整数,那么你的代码应该是:

      int n = rand.nextInt(26); //I want a random int between 0 and 25 inclusive
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-05
        • 2021-08-23
        • 1970-01-01
        相关资源
        最近更新 更多