Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 投币顺序_Java - Fatal编程技术网

Java 投币顺序

Java 投币顺序,java,Java,我被这个项目困住了。我必须编写一个抛硬币程序来生成HTH(121),我必须计算生成该序列需要多少次抛硬币。然后我需要计算序列的平均值。下面是代码。例如:如果我得到 1112222222122122122211222121 28 11111122121 11 11121 5 那么我的平均值应该是(28+11+5)/3=14.66667。然而,我一直在编写平均值。我已经设置了for循环,但我不确定在哪里或如何放置平均值的代码 我在考虑做类似的事情 int average= count/N; 但我

我被这个项目困住了。我必须编写一个抛硬币程序来生成HTH(121),我必须计算生成该序列需要多少次抛硬币。然后我需要计算序列的平均值。下面是代码。例如:如果我得到

1112222222122122122211222121
28
11111122121
11
11121
5
那么我的平均值应该是(28+11+5)/3=14.66667。然而,我一直在编写平均值。我已经设置了for循环,但我不确定在哪里或如何放置平均值的代码

我在考虑做类似的事情

int average= count/N;
但我不知道如何将每个计数相加,也不知道在编译器没有说“计数不能解析为变量”的情况下,将该语句放在何处

封装HTX\u程序;
公共类硬币序列{
公共静态int coinFlip(){
多模硬币=新多模硬币(2);
硬币卷();
int x=coin.getFaceValue();
返回x;
}
公共静态void main(字符串[]args){
最终整数N=3;

对于(int i=0;i首先,您需要跟踪所有循环的总翻转:

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.
}
publicstaticvoidmain(字符串[]args){
最终整数N=3;
int totalFlips=0;//跟踪总翻转。

对于(int i=0;i虽然musefan的解决方案是完全正确的,但在跑步过程中同时计算“计数”和“总翻转”对我来说有点奇怪。 我只做一次跑步,然后将跑步的“计数”添加到总翻转中。 为了使它更加明显,我还将在一个单独的方法中运行一次(以下代码基于musefan的代码):

publicstaticvoidmain(字符串[]args){
最终整数N=3;
int totalFlips=0;//跟踪总翻转。

对于(int i=0;在进行整数除法(
count/N
)时输入该值),像
1/3
2/3
这样的操作将返回
0
。如果需要小数,请使用
double
。平均值不是整数,它应该是double
double avarage=count*1.0/N;
您还需要乘以
1.0
,否则它将进行整数除法。是的,谢谢。我忘记了在!@iajrz,实际检测与@musefan代码中的检测完全相同。我只将处理序列(如您的1121示例)拉入一个单独的方法中。然后删除该方法中递增的totalFlips。结果应该完全相同。请注意,
sequenceSoFar.substring(sequenceSoFar.length()-3)
按运行顺序进行最后3次翻转。
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.
}
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;
}