【发布时间】:2017-06-18 23:54:27
【问题描述】:
我只想说,过去 3 个小时我一直在搜索这个(和其他几个)网站,但无济于事,我已经阅读了我能找到的关于我的主题的每一篇文章,或者它确实做到了不适用,或者我不太明白发生了什么。
我有 2 个问题。
我似乎无法让随机数生成器在做出选择后放弃它。
-
我的第二个问题是,每场比赛只能有一个六分回合,我似乎无法弄清楚如何将其限制为只有一个具有 6 分回合的特定限制的回合。
该程序旨在模拟选择跳跃 跳伞比赛。有三个独立的比赛 (A,AA,AAA) (难度级别,某些动作不会出现 A 或 AA,AAA全包),用户可以从中挑选以及 个人赛是6轮还是10轮(A会 始终为 6 轮)。一旦用户选择了比赛并且 轮数,程序应该输出个人 每轮要完成的动作以及得分 轮(对所有 6 轮或 10 轮比赛进行此操作)。这是 我的第一个问题在哪里:
一旦选择了一个动作,它就不能 在接下来的比赛中再次使用。我不能为 我的生活弄清楚如何做到这一点。
继续,有两个 单独的得分类别,编号的动作(我的 1-22 程序)和字母移动(23及以上),编号值得 2分,字母为1。每轮5分或6分
我遇到的问题是有一个 6 点回合,它只能由 3 个编号的移动组成,没有其他 组合是可以接受的;除此之外,只有 在整个比赛中获得六分。*
for(int i=0; i < round; i++ )
{
System.out.printf("\nRound %d:\n", i+1);
point = 0;
while(point < 5)
{
pickedRandom=false;
formation = myRandom.nextInt(38) + 1;
while(formation == 31)
{
formation = myRandom.nextInt(38) + 1;
}
if(point == 4 && pickedRandom && formation < 23 )
{
while(formation < 23)
formation = myRandom.nextInt(38) + 1;
}
if(formation < 23)
{
point+=2;
}
else
{
pickedRandom=true;
point++;
}
formationRound.set( formation, true );
if(formation > 22)
System.out.printf(" %s %s ",randomLetter(formation), formationName(formation));
else
System.out.printf(" %d %s", formation, formationName(formation));
}
System.out.println();
System.out.printf( " %s \n", point );
}
}
【问题讨论】:
-
一段文字讲述一个故事 - 毫无疑问 - 不知道你的代码出了什么问题,请参阅 Please add a minimal, complete, and verifiable example 和 ericlippert.com/2014/03/05/how-to-debug-small-programs
-
欢迎来到 SO。对于某人来说,这是一个很长的描述。您是否通过调试器运行过代码?这是要做的第一件事。
-
假设您使用相关代码段而不是整个 senario 以最少的描述发布您的问题。
-
大家好,我发布完整代码和冗长描述的唯一原因是,如果不深入解释,我真的不知道如何描述我的问题,我会将代码缩减为给我带来问题的部分。我目前拥有的将运行,并且没有标记任何问题。无论我尝试了什么,我都无法让程序将每场比赛的输出限制为一轮 6 分,而且我无法找到一种方法让我的随机数生成器将其选择标记为下次不可用运行。
-
希望编辑有所帮助。关于防止随机数生成器能够选择两次移动,我一直在尝试采取的方法是在选择移动后将该移动设置为真,但这只是我正在犯的一些简单错误,或者它只是我还不知道的东西,无论我做了什么,我都无法让程序合作。我什至不知道从哪里开始让程序每次比赛只输出一个 6 分的回合。 @ScaryWombat