Versuchen, Java mit meinem Sohn zu lernen. Ich habe jede Wortkombination gegoogelt, aber ich kann keine Antwort finden. Ich würde jede Hilfe oder Richtung schätzen.mooc java Übung 78, Begrenzter Zähler akzeptiert keine Benutzereingabe
Das Programm nimmt die Benutzereingabe für Minuten/Stunden nicht auf, um den Zähler zu initiieren. So beginnt Zähler um 00:00:50 für Eingabe von 23:59:50. Hier ist mein Code bisher:
Hauptklasse:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
BoundedCounter seconds = new BoundedCounter(59);
BoundedCounter minutes = new BoundedCounter(59);
BoundedCounter hours = new BoundedCounter(23);
System.out.print("seconds: ");
int s = Integer.parseInt(reader.nextLine());
System.out.print("minutes: ");
int m = Integer.parseInt(reader.nextLine());
System.out.print("hours: ");
int h = Integer.parseInt(reader.nextLine());
seconds.setValue(s);
minutes.setValue(m);
hours.setValue(h);
int i = 0;
while (i < 121) {
System.out.println(hours + ":" + minutes + ":" + seconds);
seconds.next();
if(seconds.getValue()== 0){
minutes.next();
}
// if minutes become zero, advance hours
if(minutes.getValue()== 0 && seconds.getValue()== 0){
hours.next();
}
i++;
}
}
}
public class BoundedCounter {
private int value;
private int upperLimit;
public BoundedCounter(int upperLimit){
this.value = 0;
this.upperLimit = upperLimit;
}
public void next(){
if(value < upperLimit){
value++;
}
else {
this.value = 0;
}
}
public String toString(){
if(value < 10){
return "0" + this.value;
}
else{
return "" + this.value;
}
}
public int getValue(){
return this.value;
}
public void setValue(int newValue){
if(newValue > 0 && newValue < this.upperLimit){
this.value = newValue;
}
}
}
danke Steve! – Tami
Ich hatte gerade das Problem gefunden: meine setValue if-Anweisung ignorierte die Eingabe, weil es das obere Limit war. Durch Ändern in newValue <= this.upperLimit wurde die Eingabe erkannt. – Tami