查看完整题目和答题点此前往
首先分析题目,提取关键信息:
- 津津要去学校还要去补习班
- 津津如果一天上课超过八个小时就会不高兴
- 上得越久就会越不高兴
- 津津不会因为其它事不高兴
- 她的不高兴不会持续到第二天
- 检查一下津津下周的日程安排,看看下周她会不会不高兴
- 如果会的话,哪天最不高兴。
然后分析输入输出格式:
- 输入包括 7 行数据,分别表示周一到周日的日程安排
- 每行包括两个小于 10 的非负整数
- 分别表示津津在学校上课的时间和补习班上课的时间。
- 输出一个数字。
- 不会不高兴则输出 0
- 会则输出最不高兴的是周几(0~7)
- 如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。
由上面分析可知:
- 要定义两个变量循环接收输入
- 然后对每一次输入的变量进行处理,判断是否超过8
- 如果有超过8的就比较一下是不是最大的。也需要一个变量存储这个最大值。
- 还要输出是星期几。因为要全部判断完,所以最好也定义一个变量存储当前最大值的下标,方便处理后续数据。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
byte a,b,max=0,t=0;
for(byte i=1;i<=7;i++){
a=scanner.nextByte();
b=scanner.nextByte();
if(a+b>8&&a+b>max){
max=(byte)(a+b);
t=i;
}
}
System.out.println(t);
}
}
- 首先进行变量定义,两个变量接收每次输入的时间;
- 一个最大值变量,因为如果没有超过超过8小时就输出0,所以直接把最大值的变量初始化0。
- 一个变量存储最长时间的星期几。
- 然后循环输入,因为固定是一个星期,所以次数为7,从1开始就省去星期几+1的操作。
- 循环接收两个时间的输入
- 然后进行判断,如果大于8并且比当前最大值大,就替换最大值和记录是星期几。
- 一定要大于最大值才能替换,因为同一个值需要的是最靠前的一天。
- 因为加法会默认强转成int型再运算,所以得强转回byte型。直接定义int型变量就不用这样操作。
- 最后把结果输出。