Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 时间输入与显示_Java - Fatal编程技术网

Java 时间输入与显示

Java 时间输入与显示,java,Java,我试图让程序接受输入,并以我在displayTime方法中指定的格式显示它。它不要求用户输入值,而是直接跳转到displayTime方法并将值赋给00;00;0有人能帮助我,让我知道什么需要更改,以便它先输入然后显示吗 import java.util.Scanner; public class Time { Scanner input = new Scanner(System.in); private int hour = 0; private int minute = 0; priv

我试图让程序接受输入,并以我在displayTime方法中指定的格式显示它。它不要求用户输入值,而是直接跳转到displayTime方法并将值赋给00;00;0有人能帮助我,让我知道什么需要更改,以便它先输入然后显示吗

import java.util.Scanner;
public class Time {
 Scanner input = new Scanner(System.in);
 private int hour = 0;
 private int minute = 0;
 private int second = 0;

 public void getHour(int h) {
 h = hour;
 System.out.println("Enter Hour:");
 h = input.nextInt();

 }
 public void getMinute(int m) {
     m = minute;
     System.out.println("Enter Minute:");
     m = input.nextInt();
 }
 public void getSecond(int s) {
     s = second;
     System.out.println("Enter Second:");
     s = input.nextInt();
 }

 public String displayTime() {
 return String.format("%02d:%02d:%02d", hour, minute, second);
}
}
public class Test {

public static void main (String args[]) {
Time TimeObject = new Time();
System.out.println(TimeObject.displayTime());
}   
}
试试这个:

class Time {
private int hour = 0;
private int minute = 0;
private int second = 0;

public void getHour(int h) {
    hour = h;
}
public void getMinute(int m) {
    minute = m;
}

public void getSecond(int s) {
    second = s;
}
public String displayTime() {
    return String.format("%02d:%02d:%02d", hour, minute, second);
}
}
public class Test{
public static void main(String[] args) {
    int h, m, s;
    Scanner input = new Scanner(System.in);
    System.out.println("Enter Hour:");
    h = input.nextInt();
    System.out.println("Enter Minute:");
    m = input.nextInt();
    System.out.println("Enter Second:");
    s = input.nextInt();
    Time TimeObject = new Time();
    TimeObject.getHour(h);
    TimeObject.getMinute(m);
    TimeObject.getSecond(s);
    System.out.println(TimeObject.displayTime());
}
}

至于要创建和格式化的实际处理时间,为什么不使用Java的日历API呢

看看这个:


在你的例子中,很多事情都是错误的。首先,按照惯例,Java中的变量名以小写开头,其次,您的方法
getHour(inth)
期望一个小时过去,但也从键盘请求它。对我来说没有意义

这么说来,我宁愿做这样的事情:

public class Time {

Scanner input = new Scanner(System.in);
private int hours = 0;
private int minutes = 0;
private int seconds = 0;

private int getHours() {
    System.out.println("Hours:");
    int hour = input.nextInt();
    if (hour < 0 || hour >= 24) {
        System.out.println("Wrong input. Hours must be between 0 and 23.Try again...");
        return getHours();
    }
    return hour;
}

private int getMinutes() {
    System.out.println("Minutes:");
    int minute = input.nextInt();
    if (minute < 0 || minute >= 60) {
        System.out.println("Wrong input. Minutes must be between 0 and 59. Try again...");
        return getMinutes();
    }
    return minute;
}

private int getSeconds() {
    System.out.println("Seconds:");
    int second = input.nextInt();
    if (second < 0 || second >= 60) {
        System.out.println("Wrong input. Seconds must be between 0 and 59. Try again...");
        return getSeconds();
    }
    return second;
}

public void getTime() {
    hours = getHours();
    minutes = getMinutes();
    seconds = getSeconds();
}

public String displayTime() {
    return String.format("%02d:%02d:%02d", hours, minutes, seconds);
}
}

它将递归地请求值,直到输入到正确的范围。

谢谢,我想我应该在main类中进行输入?您没有在main()中调用getHour()、getMinute()、getSecond()。这就是为什么这些方法中的代码没有运行对于堆栈溢出来说不是一个好问题。您可以查看关于扫描仪的数百个现有问题中的任何一个,并比较您的代码。然后你们要么(a)解决了你们的问题,要么(b)把它缩小到一个非常具体的问题,在这里提出。
public class Test {

public static void main(String args[]) {
    Time time = new Time();
    time.getTime();
    System.out.println(time.displayTime());

}

}