Comment programmer un chronomètre
J'ai trouvé ce chronomètre de code java à partir de quelque part sur Internet, mais il ne semble pas fonctionner. Je me demandais comment faire pour corriger ce code pour le faire fonctionner. Il est censé avoir des fonctionnalités pour démarrer, arrêter et réinitialiser, et devrait afficher l'heure en heures:minutes:secondes.millisecondes (exemple: 12:35:17.26). S'il vous plaît aider moi.
public class StopWatch {
private long startTime = 0;
private long stopTime = 0;
private boolean running = false;
public void start() {
this.startTime = System.currentTimeMillis();
this.running = true;
}
public void stop() {
this.stopTime = System.currentTimeMillis();
this.running = false;
}
//elaspsed time in milliseconds
public long getElapsedTime() {
long elapsed;
if (running) {
elapsed = (System.currentTimeMillis() - startTime);
}
else {
elapsed = (stopTime - startTime);
}
return elapsed;
}
//elaspsed time in seconds
public long getElapsedTimeSecs() {
long elapsed;
if (running) {
elapsed = ((System.currentTimeMillis() - startTime) / 1000);
}
else {
elapsed = ((stopTime - startTime) / 1000);
}
return elapsed;
}
//sample usage
public static void main(String[] args) {
StopWatch s = new StopWatch();
s.start();
//code you want to time goes here
s.stop();
System.out.println("elapsed time in milliseconds: " + s.getElapsedTime());
}
}
- Que vous dire exactement par "ne fonctionne pas"? Qu'attendez-vous de ce code?
- Devoirs? Si oui, merci d'ajouter la balise.
- je veux qu'il soit un minuteur de compte à rebours qui devrait sous la forme hh:mm:ss:ms
Vous devez vous connecter pour publier un commentaire.
Ce exemple montre comment démarrer et arrêter un
javax.swing.Timer
. Plusieurs approches de mise en forme sont présentés ici. Reset est laissée en exercice.Par le niveau de votre mission, des sons comme votre professeur veut que vous utilisez les boucles imbriquées, qui ne sont pas utilisés dans l'exemple que vous avez pris dans le web.
Je ne vais pas vous donner la réponse, mais c'est assez simple: à l'extérieur-la plupart boucle pendant des heures, l'une à l'intérieur heures pour les minutes, une à l'intérieur de minutes pour les secondes, et une à l'intérieur de secondes pour millisecondes. Le plus intérieur de la boucle (en millisecondes), est celui qui imprime l'heure actuelle.
Quelque chose comme ceci:
Maintenant faire joli et ajouter un 1 millisecondes de retard dans le plus intérieur de la boucle et vous avez terminé! 🙂
Si vous voulez faire un chronomètre, vous devez faire un Thread. L'API Java membres de toutes les fonctions d'un thread. Ceci est nécessaire, car sinon vous ne serez pas en mesure de mettre en pause le chronomètre. C'est parce que le système passe à la pleine exécution sur le comptage.
Aussi, le script que vous avez fourni est utilisé pour déterminer la quantité de temps un certain calcul a été effectué, il n'est pas ment pour le calendrier lui-même.
Je vous suggère de faire 2 classes, 1 pour le minuteur et 1 pour l'interface graphique. faire de la GUI avec une étiquette, un démarrage, l'arrêt et le bouton de réinitialisation.
Ensuite, assurez-vous que la minuterie de classe EXTENDS THREAD (ou implements Runnable) et d'en faire un thread. Ensuite mettre en œuvre les fonctions de stopper le thread ou de démarrer le thread (votre start/stop boutons). La Réinitialisation doit être facile après cela, (il suffit de régler la minuterie à 0).
Le Chronomètre de classe pourrait ressembler à ceci:
Dans l'interface de la classe de vous faire commencer à appeler le "startThread', arrêtez de l'appeler le Chronomètre.stop(); (qui est un Fil-fonction) et faire de reset le reset().
Ceci devrait vous obtenir a commencé avec une base chrono. Un (mauvais) exemple de son utilisation:
Il serait effectivement plus judicieux de faire les calculs sur la currentTimeMillis à l'extérieur de la threadclass.
public static void main(String[] args) { StopWatch s = new StopWatch(); s.startThread(); System.out.println(s.getTime()); }
ce code. mais il a abouti à 0 sur la console. pourquoi est-il?