-1

我应该制定一个航班时刻表,但遇到了一个小问题。

用户必须插入:出发日(1 - 7,其中 1 表示一周的第一天,7 表示一周的最后一天)。出发时间 (0 - 24)。出发分钟 (0 - 60)。

然后: 飞行的时间长度(以小时为单位)。以分钟为单位的飞行长度。

然后:用户根据上面插入的数据得到到达时间。

出于某种原因,如果我输入:

出发时间:第 1 天,第 10 小时,第 00 分钟。

飞行时长 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);
    }
}
4

2 回答 2

1

由于您将此作为家庭作业,因此我不会告诉您答案(尽管我指出了两种一般类型的错误以及一些样式问题),而是为您提供一些工具来自己查找问题。

首先,对于这么简单的事情,试着假装是电脑。去做这个

  1. 在一张纸上跨行写下变量名称。
  2. 浏览每一行,看看你是否能弄清楚变量是如何变化的。

如果这不起作用(有时问题是您对计算机所做的事情的理解是错误的),那么您可以打印变量 (a) 在它们都被读取之后和 (b) 在每组条件之间。为此,在读取变量和每个条件之后复制 System.println 命令(可能带有修改)。

希望这将帮助您找到答案。

于 2013-04-28T00:12:50.310 回答
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();

按照相同的格式询问飞行应该持续多长时间。

于 2013-04-28T00:12:32.780 回答