2016-09-18 8 views
0

mein Lehrer hat uns gebeten, einen Benutzer für eine Startzeit und eine Stoppzeit eines Rennfahrers zu bitten, indem Sie sie bitten, eine Zeit (HH, mm, SS) einzugeben, die das JOptionPane verwendet . Ich bin mir nicht sicher, wie ich das machen soll. Ich habe versucht, integer.parseint (joptionpane ....), aber ich bekomme Fehlermeldungen, wenn ich eine Zeit eingeben. Außerdem weiß ich, dass das Problem darin besteht, dass ich einen Benutzer auffordere, eine Zeit für meine Zeitklasse einzugeben, die anders sein sollte. Ich brauche Hilfe, um von diesem Punkt aus anzufangen. Hier ist mein Code (Ich habe auch in es meine Zeit Klasse enthalten:Bitten um eine Benutzereingabe für die Zeit mit 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 

Antwort

0

Hier ist die Ausgabe

startTime1 = new Time(); 
stopTime1 = new Time(); 

Sie initialisieren & Stoppzeit mit Standard-Konstruktor beginnen, wo Standardkonstruktors den Start zurück und Stoppzeit als Null daher erhalten Sie die Ausgabe auch Null.

so müssen Sie parametrisierte Konstruktor verwenden, um die Zeiten zu unterscheiden.

d. H.

startTime1 = new Time(10,10,10d); // 10hr 10 min 10 sec 
stopTime1 = new Time(10,20,10d); //10hr 20 min 10 sec 

dann finden Sie den Unterschied von 10 Minuten, was 600 Sekunden ist.

Auch unterhalb der Linie verwenden

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

Hoffnung, die Sie verstehen.

Verwandte Themen