2017-01-14 71 views
-1

我想让程序以我在displayTime方法中指定的格式输入并显示它。不要求用户输入直接跳到displayTime方法的值,并将值赋给00; 00; 00。有人可以帮助我,让我知道需要改变什么,所以它首先需要输入,然后显示?时间输入和显示

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()); 
} 
} 
+0

不是一个很好的堆栈溢出问题。您可以查看关于Scanner的数百个现有问题中的任何一个,并比较您的代码。然后你的世界要么(a)解决你的问题,要么(b)把它缩小到一个非常具体的问题来在这里提出。 –

回答

0

试试这个:

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()); 
} 
} 
+0

谢谢,我想我应该把主要课程的输入? – cris22tian

+0

您还没有在main()中调用getHour(),getMinute(),getSecond()。这就是为什么这些方法中的代码没有运行 –

1

很多事情是错在你的榜样。首先,按照惯例,变量名称在Java中以小写字母开头,其次,您的方法getHour(int h)预计会传递一个小时,但也会从键盘请求它。对我来说没有意义。

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

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); 
} 
} 

而主要:

public class Test { 

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

} 

} 

,直到它在适当的范围内得到进入这将递归索要价值。