【发布时间】:2017-03-30 02:59:53
【问题描述】:
我有一个程序可以从袋子中取出豆子并在以下条件下将其取出。然而,我的结果似乎根本不相关,似乎豆子没有被记住。
public class Prog477h {
public static void main(String[] args) {
ArrayList<Integer> beans = new ArrayList<Integer>(); //make arrayList and add first 10 random beans
Random addrand = new Random();
for (int i = 0; i < 10; i++) {
int bean = addrand.nextInt(2);
beans.add(bean);
}
//print title
System.out.println("Beans\tBlack\tWhite\tLast");
for (int i = 0; i <= 50; i++) { //start for loop for 50 iterations
int whites = countWhite(beans); //count the initial white
int blacks = countBlack(beans); //count the initial black
String last = getLast(beans); //get the last
System.out.println(beans.size() + "\t" + blacks + "\t" + whites + "\t" + last + "\t"); //print row
//draw two beans and remove them
Random drawRand = new Random();
int draw1 = drawRand.nextInt(beans.size());
int beanDrawn1 = beans.get(draw1);
beans.remove(beanDrawn1);
int draw2 = drawRand.nextInt(beans.size());
int beanDrawn2 = beans.get(draw2);
beans.remove(beanDrawn2);
//check the beans if they are 0 then they are white and if they are 1 they are black
if (beanDrawn1 == 0 && beanDrawn2 == 0) {
beans.add(1); //both white, add a black
} else if (beanDrawn1 == 1 && beanDrawn2 == 1) {
beans.add(beanDrawn1); //both black add one back
} else if (beanDrawn1 == 1 && beanDrawn2 == 0) {
beans.add(beanDrawn2); //one black one white, add white back
} else if (beanDrawn1 == 0 && beanDrawn2 == 1) {
beans.add(beanDrawn1); //same as above
}
//add two random beans to offset for a +1 bean increase
int bean = addrand.nextInt(2);
beans.add(bean);
bean = addrand.nextInt(2);
beans.add(bean);
}
}
//get the last
static String getLast(ArrayList<Integer> a) {
String display = "";
int last = a.get(a.size() - 1);
if (last == 0) {
display += "White";
} else {
display += "Black";
}
return display;
}
//get the white
static int countWhite(ArrayList<Integer> a) {
int whites = 0;
for (int i : a) { //go through loop and increase at 0s
if (a.get(i) == 0) {
whites++;
}
}
return whites;
}
//get the black
static int countBlack(ArrayList<Integer> a) {
int blacks = 0;
for (int i : a) { //go through loop and increase at 1s
if (a.get(i) == 1) {
blacks++;
}
}
return blacks;
}
}
我得到的输出是。
豆 黑色 白色 最后
10 6 4 黑色
11 5 6 黑色
12 0 12 白色
13 13 0 白色
14 14 0 白色
15 11 4 白色
16 12 4 白色
17 0 17 白色
18 13 5 白色
19 0 19 白色
20 0 20 白色
21 8 13 白色
22 7 15 白色
23 15 8 白色
24 14 10 黑色
25 25 0 黑色
26 0 26 黑色
27 0 27 黑色
28 14 14 白色
29 15 14 白色
30 14 16 黑色
31 0 31 黑色
32 0 32 黑色
33 19 14 白色
34 34 0 黑色
35 35 0 白色
36 36 0 黑色
37 19 18 白色
38 19 19 黑色
39 0 39 白色
40 40 0 白色
41 20 21 黑色
42 23 19 黑色
43 43 0 白色
44 44 0 白色
45 0 45 白色
46 21 25 白色
47 22 25 黑色
48 48 0 黑色
49 0 49 黑色
50 24 26 白色
51 27 24 白色
52 0 52 白色
53 27 26 黑色
54 28 26 黑色
55 0 55 白色
56 29 27 白色
57 57 0 白色
58 58 0 黑色
59 32 27 黑色
60 0 60 白色
例如,您不能在最后一次试验中将所有白豆都改成白色。 Wtf 错了,请帮忙。
【问题讨论】:
-
wtf is wrong 不是问题。 Why is "Can someone help me?" not an actual question? 你的 IDE 有调试器吗?当您单步执行代码时,它会告诉您什么?
标签: java arrays list for-loop arraylist