要求用户输入两个不同的数,然后求这两个数之间的随机整数列。
比如说,用户输入第一个数是10,第二个数是-3,就得到10 -3 8 5 2 1 9 -2 6 1 3 4 7 -1。
我自己编了一点,但是只能求两个正数之间的随机整数,如果输入负数,就不会输出。 /*
 * 
 */
package 123;import java.io.*;public class 123 {    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));        int num1 = 0;
        int num2 = 0;
        boolean stop1 = false;
        boolean stop2 = false;
        while (!stop1) {
            try {
                System.out.print("Enter a number: ");
                num1 = Integer.parseInt(in.readLine());
                stop1 = true;
            } catch (NumberFormatException nfe) {
                System.out.println("Input is invalid.");
            }
        }
        while (!stop2) {
            try {
                System.out.print("Enter a number: ");
                num2 = Integer.parseInt(in.readLine());
                if (num2 != num1) {
                    stop2 = true;
                }
                if (num2 == num1) {
                    System.out.println("Please enter an another number.");
                }
            } catch (NumberFormatException nfe) {
                System.out.println("Input is invalid.");
            }
        }        int max = 0;
        int min = 0;
        if (num1 > num2) {
            max = num1;
            min = num2;
        }
        if (num2 > num1) {
            max = num2;
            min = num1;
        }        int[] randArr = new int[max - min + 1];
        for (int i = 0; i < randArr.length; i++) {
            boolean used = true;
            int r = 0;
            while (used) {
                r = (int) ((max - min + 1) * Math.random() + min);
                used = false;
                for (int j = 0; j < randArr.length; j++) {
                    if (randArr[j] == r) {
                        used = true;
                    }
                }
            }
            randArr[i] = r;
        }        for (int i = 0; i < randArr.length; i++) {
            System.out.print(randArr[i] + " ");
        }
    }
}

解决方案 »

  1.   

    我有一个想法 如果你解决不了这个问题可以尝试一下
    先比较两个数的大小
    int c = 大的-小的;
    求 0到c 的随即序列最后for循环输出中在加上小的那个值输出;
      

  2.   

    其实还可以换一个思路,你先生成这样一个数组
    min,min+1,min+2,...,max-1,max
    然后将他们的顺序打乱即可
      

  3.   

    你的算法,有个问题,
    for (int j = 0; j < randArr.length; j++)
    {
    if (randArr[j] == r)
    {
    used = true;
    }
    }
    randArr在初始化完成的时候,他的元素的值全部为0.所以,randArr中已经有0了,当随机数为0的时候,上面的代码中,used永远为true,那么就进入死循环