2016-09-18 59 views
0

我的老師要求我們通過詢問用戶輸入一個使用JOptionPane的時間(HH,mm,ss)的賽車手的開始時間和停止時間。我不知道如何做到這一點。我試過做integer.parseint(joptionpane ....),但當我輸入一個時間時,我總是收到錯誤消息。另外,我知道問題在於,因爲我要求用戶爲我的Time類輸入一個時間,它應該是不同的。從這一點開始,我需要一些幫助。在它下面是我的代碼(我也包括我的時間類:使用JOptionPane詢問用戶輸入的時間

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 

回答

0

這裏是

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

希望你能理解這一點。