我应该编制一个航班时刻表并遇到一个小问题。
用户必须插入: 出发日(1 - 7,1表示一周的第一天,7表示一周的最后一天)。 出发时间(0 - 24)。 出发分钟(0 - 60)。
然后: 飞行的长度以小时为单位。 飞行的长度以分钟为单位。
然后: 用户根据他/她在上面插入的数据获取到达时间。
出于某种原因,如果我输入:
飞行时间为72小时。 飞行的长度以分钟为单位00分钟。
我应该得到的是:第4天,第10小时,00分。 我得到的是:第1天,第49小时,第10分钟。
- 编辑 - 这是新代码:
import java.util.Scanner;
public class Flight
{
public static void main (String [] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter flight day: ");
int FLYDAY = scan.nextInt();
System.out.println("Enter flight hour: ");
int FLYHOUR = scan.nextInt();
System.out.println("Enter flight minute: ");
int FLYMINUTE = scan.nextInt();
int departureDay = scan.nextInt();
int departureHour = scan.nextInt();
int departureMin = scan.nextInt();
departureMin += FLYMINUTE;
while(departureMin >= 60) {
departureHour++;
departureMin-=60;
}
departureHour += FLYHOUR;
while(departureHour >= 24)
{
departureDay++;
departureHour-=24;
}
while(departureDay >=8)
departureDay-=7;
System.out.println("the supposed arrival time is: day- " + departureDay + ", hour- " + departureHour + ", minute- " + departureMin);
}
}
答案 0 :(得分:1)
既然你好好把它作为家庭作业,我不会告诉你答案(虽然我注意到两种一般类型的错误加上一些风格问题),而是我会给你一些工具来自己找出问题。
首先,对于这么简单的事情,尝试假装成计算机。要做到这一点
如果这不起作用(有时问题是你对计算机做什么的理解是错误的),那么你可以在它们全部被读取之后打印变量(a)和(b)在每组条件之间打印。为此,在读取变量之后和每个条件之后复制System.println命令(可能需要修改)。
希望这会帮助您找到答案。
答案 1 :(得分:0)
您应该将if语句更改为while语句。例如,写
while(departureMin >= 60) {
departureHour++;
departureMin-=60;
}
此外,您的用户输入部分非常不稳定。更好的方法是:
Scanner scan = new Scanner (System.in);
System.out.println("Enter flight day: ");
int FLYDAY = scan.nextInt();
System.out.println("Enter flight hour: ");
int FLYHOUR = scan.nextInt();
System.out.println("Enter flight minute: ");
int FLYMINUTE = scan.nextInt();
按照相同的格式询问航班应该持续多长时间。