我希望程序能够输出使模块失效所需的天数(使模块失效时标记必须低于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");
}
}
}
答案 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
是初始输入值?