循环和if语句

时间:2016-11-28 22:21:59

标签: java

我希望程序能够输出使模块失效所需的天数(使模块失效时标记必须低于40)。
假设您输入的标记为82,天数为10 经过8次循环后,标记将达到42 9次之后它将是37次(每次"日期"将标记减5)。

我无法弄清楚如何输出标记低于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");

        }


    }
}

2 个答案:

答案 0 :(得分: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 :(得分:0)

你为什么要循环?为什么不呢:

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

,其中mark是初始输入值?