【问题标题】:ArrayList .get and .add with variables Java [closed]ArrayList .get 和 .add 与变量 Java [关闭]
【发布时间】:2015-02-11 09:41:48
【问题描述】:

我正在尝试编写一个程序,它生成 100 个从 0 到 25 的整数并将它们存储在 3 个数组中:一个用于所有数字,一个用于偶数,一个用于奇数。我无法将变量 n 添加到我的数组中。我的.get 也不能正常工作。谢谢!

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

        ArrayList myArray = new ArrayList();
        ArrayList evenArray = new ArrayList();
        ArrayList oddArray = new ArrayList();

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

            myArray.add(n);

            if(myArray.get(i) % 1 == 0)
            {
                evenArray.add(n);
            }
            else
            {
                oddArray.add(n);
            }
            i++;
        }
        return myArray;
        return evenArray;
        return oddArray;
    }

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

【问题讨论】:

  • 您认为return 的工作原理如何?
  • 想想if(myArray.get(i) % 1 == 0) 在数学上做了什么。还有其他问题,但从这里开始。
  • Kon,谢谢,我将其更改为 2。但这不是我的问题...
  • 正如@SotiriosDelimanolis 所提到的,您需要阅读return 语句的工作原理(提示:您不能从方法中多次返回对象)

标签: java random arraylist get add


【解决方案1】:

您不能从一个方法中获得三个返回值,并且无论如何您都不使用结果。请不要使用raw-types。而且,您可以将这些 List(s) 设为静态,以便在调用您的方法后使用它们。您应该在开始循环之前声明您的Random。最后,甚至是% 2 == 0。类似的,

static List<Integer> myArray = new ArrayList<>();
static List<Integer> evenArray = new ArrayList<>();
static List<Integer> oddArray = new ArrayList<>();

public static void randommethod() {
    Random rand = new Random();
    for (int i = 0; i < 100; i++) {
        int n = rand.nextInt(26); // <-- n + 0 is n. 0 to 25.
        myArray.add(n);
        if (n % 2 == 0) { // <-- test n, no need to get it again.
            evenArray.add(n);
        } else {
            oddArray.add(n);
        }
    }
}

然后

public static void main(String args[]) {
    randommethod();
    System.out.println("All: " + myArray);
    System.out.println("Even: " + evenArray);
    System.out.println("Odd: " + oddArray);
}

【讨论】:

  • 这样做,最多得到50个赔率和50个偶数
  • @user3437460 这不是真的。
  • 您可以将代码简化为(n%2==0? even: odd).add(n);,但这是编码风格的问题……
  • @ElliottFrisch 嗯,我不确定 OP 到底想要什么,他想要 100 个偶数、100 个赔率、100 个所有数字吗?
  • @user3437460:你应该理解随机性;当然,完全有可能得到100 奇数和0 偶数,反之亦然。当您查看包含问题的代码示例时,OP 想要什么是清晰可见的。
【解决方案2】:

有几种方法可以做到这一点。

Random rnd = new Random();
ArrayList<Integer> all = new ArrayList<Integer>();
ArrayList<Integer> even = new ArrayList<Integer>();

//Add 100 integers of all numbers
for(int x=0; x<100; x++)
    all.add(rnd.nextInt(26)) //26 gives random 0-25

//Add 100 integers of even numbers
int x=0;
while(x<100){
    int rand = rnd.nextInt();
    if(rand % 2 == 0){
       even.add(rand);
       x++
    }     
}

生成奇数的方式与生成偶数的方式相同。只需将条件更改为if (rand % 2 != 0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-26
    • 2014-03-20
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多