3

好的,所以我的代码适用于手头的任务。任务是翻转从单独的 Coin 类(此处未显示)实例化的 Coin 对象。我已经正确编写了代码,以便计算连续翻转的最大条纹,从而将 Heads 作为输出。我想知道如何才能突出显示此条纹,因此当我在控制台中查看输出时,条纹是可见的,因为很难注意到 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% 确定您所说的“突出显示”是什么意思。如果你只是想让它更引人注目,你总是可以在数字前打印几个 *s。如果您使用的是 Eclipse,实际更改文本颜色的最简单方法是打印出您希望用 突出显示的代码System.err.println(outputToHighlight)。它会将其打印为红色。这是错误消息通常打印到控制台的方式。不过,这只适用于 Eclipse。

然而,解决您的问题的更好方法可能是打印更少的硬币翻转!

于 2013-03-12T01:26:22.267 回答
1

而不是“突出显示”可能是特定于设备/操作系统的输出,而是输出一个关于它发生的位置和持续时间的迷你报告。

以下是代码的外观(我也为您简化了它 - 请参阅代码中的注释):

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 回答