从包中取出2个豆子。
如果:
他们都是黑色的,将其中一个放回包里丢弃 另一个。
一个是黑色,另一个白色将白豆放回袋子里 并丢弃黑豆
两者都是白色丢弃,并将黑豆放入袋中
最后一个豆是什么颜色的?
您决定编写一个可以运行50次模拟的程序。 从一袋10豆开始,继续运行程序 将袋子中的豆子数量增加1,直到你有 测试了一个60豆的袋子。用随机颜色填充袋子 豆类和随机抽取豆子。
运行模拟并打印出四列数字:
- 豆数
- 黑豆数量
- 白豆数量
- 最后一个豆子的颜色。
醇>使用ArrayList类来实现此程序。从中删除豆子 数组中的随机位置,并以不同的方式添加bean 随机位置
这里到目前为止我做了什么: 但它一直说arraylist是出界的。我知道问题出在哪里,但我不知道如何解决它。如果我从行中删除加1
index1 = rand.nextInt(bag.size() + 1)
它会说负面的错误。
import java.io.*;
import java.util.*;
import java.util.Random;
public class Counter
{
public static void main (String args[])
{
ArrayList<Integer> bag = new ArrayList<Integer>();
Random rand = new Random();
int color;
int index1;
int index2;
int blackCount = 0;
int whiteCount = 0;
String last = "";
System.out.println("Beans Black White Last");
for (int total = 10; total <= 60; total++)
{
for (int run = total; run > 0; run--)
{
// 1 black and 2 white
color = rand.nextInt(2) + 1;
if (color == 1)
{
blackCount++;
}
else if (color == 2)
{
whiteCount++;
}
bag.add(rand.nextInt(bag.size() + 1), color);
}
System.out.print(total + "\t " + blackCount + "\t " + whiteCount + "\t ");
while (blackCount != 1 || whiteCount != 1)
{
index1 = rand.nextInt(bag.size());
index2 = rand.nextInt(bag.size());
if (bag.get(index1) == 1 && bag.get(index2) == 1)
{
bag.remove(index2);
blackCount--;
}
else if (bag.get(index1) == 1 && bag.get(index2) == 2)
{
bag.remove(index1);
blackCount--;
}
else if (bag.get(index1) == 2 && bag.get(index2) == 1)
{
bag.remove(index2);
blackCount--;
}
else if (bag.get(index1) == 2 && bag.get(index2) == 2)
{
bag.remove(index1);
index2 = rand.nextInt(bag.size());
while (bag.get(index2) == 1)
{
if (bag.get(index2) == 1)
{
index2 = rand.nextInt(bag.size());
}
}
bag.remove(index2);
bag.add(rand.nextInt(bag.size() + 1), 1);
blackCount++;
whiteCount -= 2;
}
}
if (whiteCount == 1)
{
last = "White";
}
else
{
last = "Black";
}
System.out.print(last + "\n");
bag.clear();
blackCount = 0;
whiteCount = 0;
}
}
}