2016-09-28 7 views
0
//Calculate the amount of money you will receive based on your option 

if (n == 0) { 

    while (death - 1 >= counter) { 

     System.out.format("Week %2d Linear: $%.2f Exponential: $%.2f\n", counter, a, p); 

     if ((death - 1 == counter) && (a >= p)) { 

      System.out.format("Your uncle dies in week %2d. But you were lucky and received an extra " + 
        "$%.2f dollars.\n", death, ((death * initial) - ((Math.pow(2, (death - 1))/100)))); 
     } 
     if ((p > a) && (death - 1 >= counter)) { 
      System.out.format("Your uncle dies in week %2d. But you were unlucky and missed an extra " + 
        "$%.2f dollars.\n", death, (p - a)); 
     } 
     a += initial; 
     counter++; 
     p = p * 2; 
    } 
} 

Выход:Остановить процесс вывода

неделя 1 Линейная: $ 1,39 Экспоненциальный: $ 0.01

неделя 2 Линейная: $ 2,79 Экспоненциальный: $ 0.02

Неделя 3 Линейная: $ 4,18 Экспоненциальный: $ 0.04

Неделя 4 Линейная: $ 5.58 Экспоненциальная: $ 0.08

Неделя 5 Линейная: $ 6,97 Экспоненциальный: $ 0,16

Неделя 6 Линейная: $ 8,36 Экспоненциальный: $ 0,32

Неделя 7 Линейная: $ 9,76 Экспоненциальный: $ 0,64

Неделя 8 Линейный: $ 11,15 Экспоненциальное: $ 1,28

Неделя 9 Линейные: $ 12,55 Экспоненциальные: $ 2,56

Неделя 10 Линейные: $ 13,94 Экспоненциальные: $ 5,12

Неделя 11 Linear: $ 15,34 Экспоненциальный: $ 10,24

Неделя 12 Linear: $ 16,73 Экспоненциальный: $ 20,48

Ваш дядя умер в 31 неделю Но вы не повезло, и пропустил дополнительные $ 3,75 долларов.

Неделя 13 Linear: $ 18,12 Экспоненциальный: $ 40,96

Ваш дядя умер в 31 неделю Но вы не повезло, и пропустил дополнительные $ 22,84 долларов.

Неделя 14 Linear: $ 19,52 Экспоненциальный: $ 81,92

Ваш дядя умер в 31 неделю Но вы не повезло, и пропустил дополнительные $ 62,40 долларов.

Мой вопрос заключается в том, как я могу остановить свое утверждение if, чтобы при p> a он прекратил вывод и сказал, что он умер. Неделя 12 в моем примере я хочу, чтобы он прекратил вывод и сказал, что он умер.

+0

его почти, если в двенадцати, когда р, наконец, больше, чем я хочу поставить перерыв, но я не могу положить неравенство говоря, когда р, наконец, проходит остановку выводящей – donortiz

+0

Вы должны действительно исправить ваш отступ. – Zarwan

+0

жаль, что я только начал использовать java и этот сайт .. – donortiz

ответ

0

Поскольку условие (death-1> = counter) проверяется в состоянии while, его избыточный для второго оператора if. Кроме того, два оператора If являются взаимоисключающими, поэтому вы можете использовать, а если .. else условно, то этот оператор проверяется только один раз и относительно быстрее/удобочитаем.

   if ((death - 1 == counter) && (a >= p)) { 
        System.out.format("Your uncle dies in week %2d. But you were lucky and received an extra " + 
          "$%.2f dollars.\n", death, ((death * initial) - ((Math.pow(2, (death - 1))/100)))); 
       }else if(p > a) { 
        System.out.format("Your uncle dies in week %2d. But you were unlucky and missed an extra " + 
          "$%.2f dollars.\n", death, (p - a)); 
        break; 
       } 
0

Здесь нет тонны информации; но обычно, если вы хотите прекратить цикл при выполнении условия, вы можете либо break цикл, либо изменить логическую переменную, которая проверяется в цикле while, не позволяя ей снова зацикливаться.

+0

я понимаю, но на выходе, когда он поражает неделю 12 (p> a), поэтому он начинает выводить, что он умирает. На неделе 12 это единственный раз, когда я хочу, чтобы он выводился, потому что в первый раз (p> a) есть способ остановить вывод после этого? я бы просто добавить перерыв после него? – donortiz

+0

Вы хотите остановить * all * output, эффективно заканчивая программу? Или только вывод, в котором говорится, что дядя умер? Если вы хотите, чтобы весь выход остановился, перерыв выведет вас из цикла while, и программа закончится. –

+0

в 12 он выйдет, он умер, потому что я хочу только вывести, когда p окончательно превосходит a. но в 13 я не хочу, чтобы он выводил что-то – donortiz