在一定范围内创建一个简单的java随机数字选择

时间:2018-03-26 15:40:24

标签: java random

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

我对java很新,想自己创造一些有用的东西。 我的想法是在一个范围内创建一个随机数字选择器。 所以,让我们说范围是1-50,我希望在这个范围内有5个随机数,它们必须完全不同。我以前曾经使用过Random,但不确定我做错了什么,这是我到目前为止的代码,如果可能的话,请把我推向正确的方向。 我想用数字创建一个数组或列表,还是有更好的方法来做到这一点?

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();
    }

}
抱歉,如果我的代码很乱。 目前,我甚至无法将随机数添加到数组中

2 个答案:

答案 0 :(得分:0)

试试这个,我确实向你解释了代码中的注释有什么问题,请阅读它们。

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);

   }  

}

}

答案 1 :(得分:0)

感谢大家的建议和提示。最后我想我设法用下面的代码得到了我想要的代码 如果你在这个方法中看到错误,或者它有一种在java中不允许的方式,请告诉我。

<div class="pdf-pagination">
  <ul>
    <li class="disabled">
      <a id="pdfPaginationLink0" href="#" data-page="0">←</a>
    </li>
    <li class="active">
      <a id="pdfPaginationLink1" href="#" data-page="1">1</a>
    </li>
    <li>
      <a id="pdfPaginationLink2" href="#" data-page="2">2</a>
    </li>
    <li>
      <a id="pdfPaginationLink3" href="#" data-page="2">→</a>
    </li>
  </ul>
</div>

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

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();
    }

}

似乎这样工作正常