3

わかりましたので、私のコードは目前のタスクで機能します。割り当ては、別の Coin クラス (ここには示されていません) からインスタンス化された Coin オブジェクトを反転することです。出力として表が得られる連続フリップの最大ストリークを計算するように、コードを正しく記述しました。このストリークをどのように強調表示できるかを考えていたので、コンソールで出力を見ると、100回のフリップのリストでストリークに気付くのが難しいため、ストリークが表示されます。

ここに私のコードがあります:

public class Runs
{
public static void main (String[] args)
{
final int FLIPS = 100; // number of coin flips
int currentRun =0; // length of the current run of HEADS
int maxRun =0; // length of the maximum run so far
// Create a coin objecti
Coin coin = new Coin();

// Flip the coin FLIPS times
for (int i = 0; i < FLIPS; i++)
{
// Flip the coin & print the result
    coin.flip();
    int flipCount = i + 1;
    System.out.println("Flip " + flipCount +":"+ " " + coin.toString());

// Update the run information
    if (coin.isHeads()==true)
    {

        if (maxRun<currentRun)
        {
        maxRun=currentRun;
        }
        currentRun+=1;
    }

    else
        {
        currentRun = 0;
        }

}
// Print the results
System.out.println("Maximum run of heads in a row! : " + maxRun);
    }
}
4

2 に答える 2

1

「ハイライト」の意味が 100% わかりません。数字をもっと目立たせたい場合は、数字の前に数 * を印刷することができます。Eclipse を使用している場合、実際にテキストの色を変更する最も簡単な方法は、 で強調表示したいコードを印刷することですSystem.err.println(outputToHighlight)。赤く印刷されます。これは、通常、エラー メッセージがコンソールに出力される方法です。ただし、これはEclipseでのみ機能します。

おそらく、あなたの問題を解決するためのより良い方法は、コイントスの数を少なくすることでしょう!

于 2013-03-12T01:26:22.267 に答える
1

デバイス/OS固有の可能性がある出力を「強調表示」するのではなく、出力が発生した場所とその長さのミニレポートを出力します。

コードは次のようになります (簡略化してあります - コード内のメモを参照してください)。

int maxRun = 0;
int currentRun = 0;
int runStart = 0;

for (int i = 0; i < FLIPS; i++) {
    coin.flip();
    System.out.println("Flip " + (i+1) +": " + coin); // toString() is redundant

    if (coin.isHeads()) { // never compare a boolean with a boolean constant, just use it
        currentRun++; // use ++ in preference to +=1, and this should be before maxRun test
        if (maxRun < currentRun) {
            maxRun = currentRun;
            runStart = currentRun - i; // this will produce a 1-based position
        }
    } else {
        currentRun = 0;
    }
}

System.out.println("Largest run was " + maxRun + " long, starting at " + runStart);
于 2013-03-12T01:42:52.117 に答える