[英]Asking for A User Input for Time using JOptionPane
我的老师要求我们通过使用JOptionPane输入时间(HH,mm,ss)来要求用户提供赛车手的开始时间和停止时间。 我不确定该怎么做。 我曾尝试做integer.parseint(joptionpane ....),但输入时间后仍会收到错误消息。 另外,我知道问题在于,由于我要用户为我的Time类输入一个时间,因此该时间应该有所不同。 从这一点开始,我需要一些帮助。 这是我的代码(我还在其中包含了时间类:
package Racers.java;
import javax.swing.JOptionPane;
public class Racers
{
public static void main(String[] args)
{
//racer1
String racer1;
Time startTime1;
Time stopTime1;
double elapsedTime1;
//assigning racer1
racer1 = JOptionPane.showInputDialog("Please enter the name of the first racer: ");
startTime1 = new Time();
stopTime1 = new Time();
elapsedTime1 = stopTime1.minus(startTime1).getTime();
JOptionPane.showMessageDialog(null,
"Here is the racer's name, start time, stop time, and elapsed time:\n"
+ racer1 + (" - ") + ("Start time: ") + startTime1 + ("; ") + ("Stop time: ") + stopTime1 + ("; ") + ("Elapsed time: ") + elapsedTime1 + "\n"
}//End main
}//End Racers
class Time
{
//Variable to hold seconds
double seconds;
//Constructors for class Time
public Time()
{
seconds = 0.0;
}
public Time(double newSeconds)
{
seconds = newSeconds;
}
public Time(int hours, int minutes, double newSeconds)
{
seconds = (double)(hours * 3600 + minutes * 60) + newSeconds;
}
//Observers for class Time
public double getTime()
{
//Return elapsed time
return seconds;
}
public int getHours()
{
//Compute whole hours from seconds
return (int)seconds / 3600;
}
public int getMinutes()
{
//Seconds after hours taken out
int remainingSeconds = (int)seconds % 3600;
//Compute minutes from remainder
return remainingSeconds / 60;
}
public double getSeconds()
{
//Seconds after minutes taken out
return seconds % 60.0;
}
//Returns HH:MM:SS.FFF
public String toString()
{
int hours = (int)seconds / 3600;
int minutes = (int)seconds % 3600 / 60;
return hours + ":" + minutes + ":" + seconds % 60.0;
}
//Operations for class Time
public Time plus(Time otherTime)
{
return new Time(seconds + otherTime.seconds);
}
public Time minus(Time otherTime)
{
return new Time(seconds - otherTime.seconds);
}
}//End Time
这是问题
startTime1 = new Time();
stopTime1 = new Time();
您正在使用默认构造函数初始化开始和停止时间,其中默认构造函数将开始和停止时间返回为零,因此输出也为零。
因此,您需要使用参数化构造函数来区分时间。
即
startTime1 = new Time(10,10,10d); // 10hr 10 min 10 sec
stopTime1 = new Time(10,20,10d); //10hr 20 min 10 sec
那么您发现10分钟的时间差就是600秒。
也使用下面的行
JOptionPane.showMessageDialog(null, "Here is the racer's name, start time, stop time, and elapsed time:\n" + racer1 + (" - ") + ("Start time: ") + startTime1 + ("; ") + ("Stop time: ") + stopTime1 + ("; ") + ("Elapsed time: ") + elapsedTime1 + "\n");
希望你能理解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.