-4

所以我必须设计和实现类时钟来在程序中实现一天中的时间....我已经完成了所有我只需要最后两个部分的帮助(不确定它是否正确我是如何做到的) 1.当分钟大于或等于60时增加小时。当秒大于或等于60时增加分钟。2.inputTime为时钟对象输入小时,分钟和秒。验证输入(小时0-23。分钟 0-59,秒 0-59)

这就是我所拥有的 1。

while (Minutes >= 60) {
   Minutes = Minutes - 60;
   Hours = Hours + 1;
}

while (Seconds >= 60) {
    Seconds = Seconds - 60;
    Minutes = Minutes + 1;
}

2.

public void inputTime() {
    Scanner input = new Scanner(System.in);

    System.out.println("Enter Hours = ");
    Hours = input.nextInt();
    System.out.println("Enter Minutes = ");
    Minutes = input.nextInt();
    System.out.println("Enter Seconds = ");
    Seconds = input.nextInt();

    //validates the input
    if (0 <= Hours && Hours < 24)
        Hours = Hours;
    else
        System.out.println("invalid");

    if (0 <= Minutes && Minutes < 60) 
        Minutes = Minutes;
    else
        System.out.println("invalid");

    if (0 <= Seconds && Seconds < 60)
        Seconds = Seconds;
    else
        System.out.println("invalid");
}
4

3 回答 3

2

您的代码包含大量错误,并且在没有使用任何合理的编码约定的情况下编写。

  1. 我们从小写字母开始变量和方法。(MinutesSeconds)
  2. while(Minutes>60 | Minutes==60);没有事情,因为它的身体是空的。
  3. Minutes>60 | Minutes==60语法错误:你应该使用||“或”
  4. 尽管 java 允许在if-else没有它的情况下编写结构,{}但强烈建议代码可读性
  5. Java 编译器忽略空格和制表符。if-else但是,您应该在块内使用缩进。
于 2012-11-07T17:44:45.587 回答
0

输入很少。

  1. 使用||代替|in 删除;最后,添加花括号来包装接下来的两个语句。

    while(Minutes>60 || Minutes==60){
     Minutes=Minutes-60;
     Hours=Hours+1;
    }
    while(Seconds>60 || Seconds==60){
      Seconds=Seconds-60;
      Minutes=Minutes+1;
    }
    
  2. 在分钟处理之前进行第二次处理,因为您的seconds处理更改了处理minutes时应注意的事项minutes

    while(Seconds>60 || Seconds==60){
      Seconds=Seconds-60;
      Minutes=Minutes+1;
    }
    while(Minutes>60 || Minutes==60){
     Minutes=Minutes-60;
     Hours=Hours+1;
    }
    
  3. 使用正确的命名约定,即类名以大写开头,而方法和变量以小写开头。

  4. 完成读取输入后,最后关闭Scanner

于 2012-11-07T17:47:22.643 回答
0

您可以计算它会循环多少次,而不是使用循环。

minutes += seconds / 60;
seconds %= 60;
hours += minutes / 60;
minutes %= 60;

注意:您应该计算第seconds一次的调整,因为它可能会改变小时数。

于 2012-11-07T18:00:18.117 回答