2013-03-12 4 views
3

ОК, поэтому мой код работает для этой задачи. назначение - перевернуть объект Coin, который создается из отдельного класса Coin (не показано здесь). Я правильно написал код, чтобы вычислить максимальную полосу последовательных переворотов, в результате чего Heads будут выводиться. Мне было интересно, как я могу выделить эту полосу, поэтому, когда я смотрю вывод в консоли, полоса видна, так как трудно заметить полосу в списке из 100 флип.Java count coinFlip главы в строке, как выделить событие штрихов

вот мой код:

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); 
    } 
} 
+0

Что вы имеете в виду под «Hightlight»? Вы хотите сделать текст или фон другим цветом? –

+0

Да, текст или фон текста различного цвета в том месте, где находится самая большая полоса головок. – kinghenry14

+0

Изменение цвета текста не зависит от платформы и трудно (если не невозможно) в Java. –

ответ

1

Я не 100% уверен, что вы подразумеваете под "изюминкой". Вы всегда можете распечатать несколько секунд до номера, если хотите сделать его более заметным. Если вы используете Eclipse, самый простой способ изменить цвет текста - распечатать код, который вы хотите выделить, с помощью System.err.println(outputToHighlight). Он распечатает его красным цветом. Таким образом, сообщения об ошибках обычно печатаются на консоли. Однако это будет работать только в Eclipse.

Возможно, лучший способ решить вашу проблему состоял в том, чтобы напечатать меньше монетных переводов!

+0

Да, это хорошая идея, я буду использовать это в Eclipse для дальнейшей отладки. Поскольку это было назначение HW для класса Java, я должен оставить число FLIPS на уровне 100. Спасибо за функцию outputToHighlight, хотя это выглядит довольно полезно. – kinghenry14

+0

@ user2158884 ура! Если вы собираетесь использовать его, просто помните, что это «.err» вместо «.out» в вашем заявлении на печать, которое это делает. Я только что составил эту переменную outputToHighlight как переменную, которая будет напечатана красным цветом. –

+0

ОК, хорошо знать! Я думал, что это какая-то функция, спасибо за это. Итак, по существу, system.err.println выделяет все, что вы вкладываете в аргумент этой функции, как если бы это была ошибка? – kinghenry14

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); 
+0

спасибо. Глядя на чужие изменения, всегда помогают. Я знаю, что когда вы выполняете println(), все, что там есть, автоматически преобразуется в строку, но я полагаю, что из привычки я использовал метод toString. Спасибо за указание на логическое сравнение с константой, я думал, что это сработает, не поставив == true, но не проверял дважды, просто пошел с тем, что у меня было. Мне также нравится реализация runStart, что делает ее немного легче следовать. – kinghenry14

 Смежные вопросы

  • Нет связанных вопросов^_^