2016-11-28 2 views
-3

Я хотел бы, чтобы программа выводила сколько дней требуется для отказа модуля (для отказа модуля значение должно быть ниже 40).
Скажите, что вы указали входную отметку 82 и количество дней 10.
После 8-кратного прохождения цикла отметка достигнет 42.
После 9 раз это будет 37 (каждый «день» уменьшит отметьте 5).Циклы и операторы if

Я не могу понять, как я могу выход, сколько дней он будет принимать для знака идти ниже 40.

Вот пример:

Mark: 82 
Days: 10 

Выход:

(0) 82 (1) 77 (2) 72 (3) 67 (4) 62 (5) 57 (6) 52 (7) 47 (8) 42 (9) 37 (10) 32 

Эта работа может занять до 8 дней до сбоя. (вот проблема)

import java.util.Scanner; 
public class Late { 

    public static void main(String[] args) { 


     int mark; 
     int numberOfDays; 

     Scanner scn = new Scanner(System.in); 

     System.out.println("Input mark"); 
     mark = scn.nextInt(); 

     System.out.println("Input number of days"); 
     numberOfDays = scn.nextInt(); 

     for (int i = 0; i <= numberOfDays; i++) { 
      System.out.println("(" + i + ")" + mark); 
      mark -=5 ; 
      if (mark < 20) { 
       System.out.println("Mark cant be lower than 20"); 
       break; 
      } 

      } 
     if (mark < 40) { 
      System.out.println("It takes " + numberOfDays + " to fail"); 

     } 


    } 
} 
+0

Что это за '(0) 82 (1) 77 (2) 72' синтаксис? Если просто список, то '[82, 77, 72]' более понятен –

+0

Да, я могу разобраться с аспектом после того, как закончу алгоритм –

+0

'' Требуется «+ i +» дней для отказа »' ??? –

ответ

2

i здесь счетчик для числа дней, и это то, что вам нужно напечатать, когда mark < 40

Однако, вам действительно нужно цикл, кроме проверки < 20?

int mark = 82; 
int daysToFail = (mark - 40)/5; // This is 8 
if (daysToFail <= numberOfDays) { 
    System.out.printf("It takes %d days to fail\n", daysToFail); 
} else { 
    System.out.println("You passed!"); 
} 

Если требуется использовать петлю, а затем использовать i, как указано, а затем добавить break при обнаружении mark < 40

+1

I нужно, чтобы цикл остановился ниже 20, да –

0

Почему вы зацикливание? Почему не просто:

System.out.println("It takes " + (int) Math.ceil((mark-39)/5.0) + " days to fail"); 

, где mark начальное значение входного сигнала?

+0

, потому что отметьте его переменную, она может быть 100. –

+0

В этом случае он печатает «Требуется 13 дней, чтобы сработать». Разве это не намерение? –

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