我坚持这个项目。我必须编写一个生成HTH(121)的硬币翻转程序,我必须计算生成该序列需要多少次抛出。之后我需要计算序列的平均值。我将代码放在下面。例如:如果我得到
的输出1112222222122122122211222121
28
11111122121
11
11121
5
然后我的平均值应为(28 + 11 + 5)/3=14.66667。但是,我对平均值进行了编码。我有for循环设置,但我不确定在何处或如何将代码放入平均值。
我在考虑做类似
的事情int average= count/N;
但我不知道如何让每个计数相互添加,以及将这个数据放在编辑器上的位置,"计数无法解析为变量"
package HTX_Program;
public class coinSequence {
public static int coinFlip() {
MultiDie coin= new MultiDie(2);
coin.roll();
int x = coin.getFaceValue();
return x;
}
public static void main(String[] args) {
final int N=3;
for(int i=0; i<N; i++){
String sequenceSoFar = "";
sequenceSoFar += coinFlip();
sequenceSoFar += coinFlip();
sequenceSoFar += coinFlip();
int count = 3;
if(!sequenceSoFar.equals("121")) {
while(!(sequenceSoFar.substring(sequenceSoFar.length() - 3).equals("121"))) {
sequenceSoFar += coinFlip();
count++;
}
}
System.out.println(sequenceSoFar);
System.out.println(count);
}
int average= count/N;
}
}
答案 0 :(得分:2)
首先,您需要跟踪所有循环中的总翻转次数:
int totalFlips = 0;
然后你需要在每次翻转时增加它:
totalFlips++;
然后最后,在循环之后,您可以计算平均值:
// Note: You have to convert one of the integers to double in order to get correct result.
double average = totalFlips / (double)N;
这是完整的修改功能:
public static void main(String[] args) {
final int N=3;
int totalFlips = 0; // Track total flips.
for(int i=0; i<N; i++){
String sequenceSoFar = "";
sequenceSoFar += coinFlip();
sequenceSoFar += coinFlip();
sequenceSoFar += coinFlip();
int count = 3;
totalFlips += 3; // add initial 3 flips to total.
if(!sequenceSoFar.equals("121")) {
while(!(sequenceSoFar.substring(sequenceSoFar.length() - 3).equals("121"))) {
sequenceSoFar += coinFlip();
count++;
totalFlips++; // increment total flips.
}
}
System.out.println(sequenceSoFar);
System.out.println(count);
}
double average = totalFlips / (double)N; // Calculate average.
}
答案 1 :(得分:0)
尽管博物馆的解决方案完全正确,但对于我来说,计算&#34;计数&#34;会感觉有点奇怪。在奔跑和&#34; totalFlips&#34;在运行期间。 我会做一次运行并添加该运行&#34;计数&#34;之后到了TotalFlips。 为了使它更加明显,我还将一次运行放在一个单独的方法中。 (以下代码基于musefan&#39; s):
public static void main(String[] args) {
final int N=3;
int totalFlips = 0; // Track total flips.
for(int i=0; i<N; i++){
int count = nbRollsInNewSequence();
totalFlips += count;
}
double average = totalFlips / (double)N; // Calculate average.
}
//rolls a die until the sequence "121" comes up.
//Prints this count and the sequence and then returns the count.
public static int nbRollsInNewSequence(){
String sequenceSoFar = "";
sequenceSoFar += coinFlip();
sequenceSoFar += coinFlip();
sequenceSoFar += coinFlip();
int count = 3;
if(!sequenceSoFar.equals("121")) {
while(!(sequenceSoFar.substring(sequenceSoFar.length() - 3).equals("121"))) {
sequenceSoFar += coinFlip();
count++;
}
}
System.out.println(sequenceSoFar);
System.out.println(count);
return count;
}