在一定范围内使用一个简单的Java随机数选择



我尝试在这里搜索类似的东西,但没有找到它,也许使用错误的关键字让我知道,但这是交易。

我对Java很新,想自己做一些有用的东西。我的想法是在一个范围内创建一个随机数量选择器。因此,假设范围从1-50起,我希望在此范围内5个随机数,并且它们必须不同。我以前曾与随机合作,但不确定我做错了什么,这是我到目前为止的代码,请尽可能将我推向正确的方向。我想创建一个带有数字的数组或列表,还是有更好的方法来执行此操作?

import java.util.Scanner;
import java.util.Random;
public class Randomizer {
    static Random rnd = new Random();
    static int rnd(int a, int b){
        return a+rnd.nextInt(b-a+1);
    }
    public static void nPicker(){
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter start of range: ");
        int start = sc.nextInt();
        System.out.println("Enter end of range: ");
        int end = sc.nextInt();
        System.out.println("Enter amount of numbers to pick: ");
        int c = sc.nextInt();
        sc.close(); 
        rnd(start,end);
        int[] randomArrays = new int[c];
        for(int i = 0; i>randomArrays.length; i++){
            randomArrays.add();
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        nPicker();
    }
}

对不起,如果我的代码很混乱。目前,我什至无法将随机数添加到数组

尝试一下,我确实向您解释了代码上的评论有什么问题,请阅读它们。

import java.util.Scanner;
import java.util.Random;
public class Randomizer {
static int[] randomArrays; // You need to declare the vector as an instance variable, otherwise it will disappear when the method it's done. 
static Random rnd = new Random();
static int rnd(int a, int b){
    return a+rnd.nextInt(b-a+1);
}
public static void nPicker(){
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter start of range: ");
    int start = sc.nextInt();
    System.out.println("Enter end of range: ");
    int end = sc.nextInt();
    System.out.println("Enter amount of numbers to pick: ");
    int c = sc.nextInt();
    sc.close(); 
    randomArrays = new int[c];
    for(int i = 0; i<randomArrays.length; i++){ // The condition was wrong

        int numberToAdd = rnd(start,end);
        randomArrays[i] = numberToAdd; //You are not using an ArrayList, vector has not the method add(), you have to add new element to the vector throughout its index
    }
}
public static void main(String[] args) {
   Randomizer rdm = new Randomizer();
   rdm.nPicker();
   for(int number:rdm.randomArrays) {
        System.out.println(number);
   }  
}

}

谢谢大家的建议和提示。最后,我认为我设法获得了以下代码的需求。
告诉我您是否在此方法中看到错误,或者是否有Java中不允许的方法。

import java.util.Scanner;
import java.util.Random;
import java.util.ArrayList;
import java.util.List;
public class Randomizer {
    static Random rnd = new Random();
    static int rnd(int a, int b){
        return a+rnd.nextInt(b-a+1);
    }
    public static void nPicker(){
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter start of range: ");
        int start = sc.nextInt();
        System.out.println("Enter end of range: ");
        int end = sc.nextInt();
        System.out.println("Enter amount of numbers to pick: ");
        int c = sc.nextInt();
        sc.close(); 
        List randomnumbers = new ArrayList();
        for(int i = 0; i<c; i++){
            int numb = rnd(start,end);
            if(randomnumbers.contains(numb)){
                break;
            }else{
                randomnumbers.add(numb);
            }
        }
        randomnumbers.forEach(System.out::println); 
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        nPicker();
    }
}

好的,最后我更改了循环如下:

for(int i = 0; i<c;){
            int numb = rnd(start,end);
            while(!(randomnumbers.contains(numb))){
                randomnumbers.add(numb);
                i++;
            }
        }
        randomnumbers.forEach(System.out::println); 
    }

似乎这样工作

最新更新