洗牌阵列。输出不正确

时间:2016-03-17 01:42:23

标签: java

我一直在研究这个程序并随机地混合整数数组的内容。

这应该是这样的:

阵列内容:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 你想改变这些数字吗? ÿ

阵列内容:5 12 7 10 6 9 15 1 13 3 4 11 14 2 8 你想改变这些数字吗? ÿ

阵列内容:2 9 15 4 12 11 3 7 10 8 1 6 13 5 14

你想改变这些数字吗? Ñ

这就是我得到的:

数组内容:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

你想改变这些数字吗? ÿ

线程中的异常" main" java.lang.NumberFormatException:对于输入字符串:" y"

并说构建失败

这是主要代码:

public class Evao1 {

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {


            Scanner kp = new Scanner(System.in);
             final int size = 15;
        char q = 'y';
        boolean flag = false;

        Shuffler myShuffler = new Shuffler(size);
        Scanner input = new Scanner(System.in);

    for(;;) {
        myShuffler.display();
        System.out.println();
        System.out.print("Do you wish to shuffle these numbers? ");

        String value = input.next();
        if (value.equals("q")) break;
        int value1 = Integer.parseInt(value);
        }
      }
    }

这是附加课程:

public class Shuffler {
    private int[] data;

    public Shuffler(int size){
        data = new int[size];

        for (int i = 0; i < size; i++)
        {
            data[i] = i + 1;
        }

    }

    public void shuffle(){
        for (int i = 0; i < data.length; i++)
        {
            Random r = new Random(15);

            int second = r.nextInt(15) + 1;
            int temp = data[i];
            data[i] = data[second];
            data[second] = temp;
        }

    }

    public void display()
    {

        String values = "";

        for (int i = 0; i < data.length; i++)
        {
            if (i < 15)
            {
                values += (i + 1);
                if (i < 14)
                {
                    values += ", ";
                }
            }
        }
        System.out.printf("Array Contents: %s \n", values);
    }
}

1 个答案:

答案 0 :(得分:0)

问题在于for类中Evao1循环的最后两行。

首先,我认为你打算写if (value.equals("n")) break;

其次,而不是int value1 = Integer.parseInt(value); 只需myShuffler.shuffle();

此外,在for的{​​{1}}循环中,您实际上并未显示display()数组中的任何内容。
data更改为values += (i + 1);