我一直在研究这个程序并随机地混合整数数组的内容。
这应该是这样的:
阵列内容: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);
}
}
答案 0 :(得分:0)
问题在于for
类中Evao1
循环的最后两行。
首先,我认为你打算写if (value.equals("n")) break;
其次,而不是int value1 = Integer.parseInt(value);
只需myShuffler.shuffle();
此外,在for
的{{1}}循环中,您实际上并未显示display()
数组中的任何内容。
将data
更改为values += (i + 1);