Java 需要有关arraylist绑定的帮助(家庭作业)
从袋子里取出2颗豆子 如果:Java 需要有关arraylist绑定的帮助(家庭作业),java,arraylist,Java,Arraylist,从袋子里取出2颗豆子 如果: 它们都是黑色的,将其中一个放回袋子并丢弃 另一个 一个是黑色的,另一个是白色的。把白色的豆子放回袋子里 把黑豆扔掉 两个都是白色的。丢弃两个,在袋子里放一个黑豆 最后一颗豆子是什么颜色的 您决定编写一个可以运行50次模拟的程序。 从一包10个bean开始,然后继续运行程序 将袋中的豆子数量增加一个,直到 测试了一袋60颗豆子。在袋子里装上任意颜色的巧克力 豆子和豆子从袋子里随机抽出豆子 运行模拟并打印四列数字: 豆数 黑豆的数量 白豆数 最后一粒豆子的颜色 使用
- 它们都是黑色的,将其中一个放回袋子并丢弃 另一个
- 一个是黑色的,另一个是白色的。把白色的豆子放回袋子里 把黑豆扔掉
- 两个都是白色的。丢弃两个,在袋子里放一个黑豆
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;
}
}
}
import java.io.*;
导入java.util.*;
导入java.util.Random;
公共课柜台
{
公共静态void main(字符串参数[])
{
ArrayList包=新的ArrayList();
Random rand=新的Random();
内色;
int index1;
int index2;
int blackCount=0;
int-whiteCount=0;
字符串last=“”;
System.out.println(“豆黑白末”);
对于(整数总计=10;总计0;运行--)
{
//1黑2白
颜色=rand.nextInt(2)+1;
如果(颜色==1)
{
黑计数++;
}
else if(颜色==2)
{
白计数++;
}
袋子添加(兰特nextInt(袋子大小()+1),颜色);
}
系统输出打印(总计+“\t”+黑计数+“\t”+白计数+“\t”);
而(黑数!=1 | |白数!=1)
{
index1=随机数(袋大小());
index2=rand.nextInt(bag.size());
if(bag.get(index1)==1&&bag.get(index2)==1)
{
袋。移除(index2);
黑数--;
}
如果(bag.get(index1)==1和&bag.get(index2)==2),则为else
{
袋。移除(index1);
黑数--;
}
else如果(bag.get(index1)==2和&bag.get(index2)==1)
{
袋。移除(index2);
黑数--;
}
else如果(bag.get(index1)==2&&bag.get(index2)==2)
{
袋。移除(index1);
index2=rand.nextInt(bag.size());
while(bag.get(index2)==1)
{
如果(行李获取(index2)=1)
{
index2=rand.nextInt(bag.size());
}
}
袋。移除(index2);
袋子添加(兰特nextInt(袋子大小()+1),1);
黑计数++;
白细胞计数-=2;
}
}
如果(白计数=1)
{
last=“白色”;
}
其他的
{
last=“黑色”;
}
系统输出打印(最后一次+“\n”);
包。清除();
黑数=0;
白细胞计数=0;
}
}
}
看到多人发布完全相同的作业总是很好。好的,首先请阅读.nextInt(max)上的javadocs。它返回的值介于0(包含)和最大值(独占)之间。因此,size+1将随机返回到数组末尾之外。@KevinO那么这是重复的:D@user8,但他们处理作业的方式不同。我很欣赏帮助人们学习的尝试,但是现在很多stackoverflow.com似乎是一个家庭作业解决方案网站,人们可以通过谷歌将答案粘贴到他们的工作中。@KevinO,但这是他们的问题-当ArrayList的大小为0时,他们不能从中随机选择一个值。因此,他们需要在随机调用中添加1,使其覆盖正确大小的范围,然后从传递给add的参数中减去1,这样它将插入正确的位置。@EdwardPeters,我不理解您的评论,抱歉。如果包(ArrayList)为空,则没有可供选择的内容,因此添加+1没有帮助:数组为空。我认为更大的问题是不使用基于零的系统。请注意,使用black=1和white=2,而不是0和1(或者更好的是使用枚举)。