Was fehlt in diesem Programm noch?
Hey, ich habe folgende Aufgabe, die ich machen soll und habe damit etwas Schwierigkeiten diese zu schreiben und hoffe dass mir jemand eventuell Tipps geben kann, was ich noch zu ergänzen habe.
Soweit bin ich gekommen, obwohl ich denke, dass das falsch ist ..
Danke im Voraus!
Aufgabenstellung
Schreiben Sie ein einfaches, aber vollständiges und ausführbares Programm, das folgendes Rätsel löst: ’Als Hannes 2 Jahre alt war, war sein Bruder Heinz halb so alt. Hannes ist jetzt x Jahre alt, wie alt ist Heinz aktuell?’
Die Anzeige (in der Shell) muss wie folgt aussehen (die resultierende Zahl soll dabei natürlich von der Eingabe abhängen ):
Als Hannes 2 Jahre alt war, war sein Bruder Heinz halb so alt. Gib Hannes aktuelles Alter ein, und erfahre wie alt Heinz jetzt ist.100
Heinz ist jetzt 99 Jahre alt.
public class Alter {
public static void main(String[] args) {
System.out.println("2");
Scanner scanner = new Scanner(System.in); //
int alter=Integer.valueOf(scanner.next()); //
int heinzAlter = 100-1; //
System.out.println("Heinz ist derzeit "+99+" Jahre alt!"); //
scanner.close(); //
}
}
1 Antwort
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Hallo, ich bin nicht so routiniert in JAVA aber, ...
int alter=Integer.valueOf(scanner.next()); //
Angenommen die Zeile ist richtig, (weiß ich nicht) dann wird hier unter "alter" abgespeichert wie alt Hannes ist. Gibst du 100 dann ist Hannes = 100.
Mit der Variable alter musst du nun weiterrechnen. "alter" ist jetzt das gleiche wie "x" in Mathe. (x = 100)
int heinzAlter = 100-1;
Das wäre falsch. Du müsstes hier schreiben
int heinzAlter = alter-1;
(ansonsten wäre Heinz immer 99 egal ob Hannes 2; 5; 50; oder sonst was alt ist.
Zum Verständnis könntest du auch überall wo "alter" steht das ersetzen mit "HannesAlter", musst du aber nicht.
System.out.println("Heinz ist derzeit "+99+" Jahre alt!");
Hier steht noch mal, dass Heinz immer 99 Jahre alt ist, egal wie alt Hannes ist. Es müsste hier stehen
System.out.println("Heinz ist derzeit "+ alter +" Jahre alt!");
Jetzt sollte das Programm funktionieren.
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Die Zeile bekommst du einen Fehler? Die Zeile ist richtig. Vielleicht hast du das hier vergessen?
import java.util.Scanner;
Das kommt ganz an den Anfang nach ganz oben. Das ist eine Bibliothek die du importiert. Eine Bibliothek ist eine Sammlung von Funktionen, die mal jemand anderes geschrieben hat. Vorteil: Man muss weniger programmieren.
Quelle https://javabeginners.de/Ein-_und_Ausgabe/Scanner.php
Zum Beispiel die eine Scannerfunktion öffnet ein extra Fenster mit Eingabemaske. Das sind ja eigentlich auch sehr viele Befehle. (Wie soll das Fenster aussehen, wo soll das positioniert werden, Farbe...) All das macht eine Funktion aus der Scannerklasse.
Füge die eine Zeile hinzu, dann schauen wir nach weiteren Fehlern, falls welche vorhanden sind. Wenn geht auch immer die Fehlermeldung mit posten.
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Zum Beispiel die eine Scannerfunktion öffnet ein extra Fenster mit Eingabemaske.
Das ist nicht richtig. Die Scanner-Klasse nimmt nur den Eingabestrom der Konsole entgegen und hilft mit Methoden, diesen auszulesen. Mehr nicht.
Das ist eine Bibliothek die du importiert.
Auch das ist nicht richtig. Scanner ist nur eine Klasse aus einem anderen Package der Java SE.
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Verwende nicht valueOf. Dazu gibt es verschiedene Gründe.
1) Diese Methode liefert ein Integer-Objekt zurück, welches die Zahl beinhaltet. Da du den Wert aber in deinem primitiven Typ (int) haben möchtest, muss Java implizit einen Cast vornehmen (der Wert im Integer-Objekt muss erst entpackt werden).
2) Dein Scanner-Objekt kennt bereits eine passende Methode, um Integer auszulesen. Dein Code wird somit auch kürzer.
int alter = scanner.nextInt();
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Also ich habe das jetzt so, da kommt, aber nur "100" raus, wenn ich das Programm laufen lasse.
import java.util.Scanner;
public class Alter {
public static void main(String[] args) {
System.out.println("100");
Scanner scanner = new Scanner(System.in);
int alter= scanner.nextInt();
int heinzAlter = alter-1;
System.out.println("Heinz ist derzeit "+heinzAlter+" Jahre alt!");
scanner.close();
}
}
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Wenn ich das Programm lese, dann kommt als erstes auf der Konsole
100
Dann sollst du ein Alter für Hannes eingeben. Du gibst 50 ein. Auf der Konsole erscheint nun:
Heinz ist derzeit 49 Jahre alt!
Also zusammengefasst siehst du als Ausgabe:
100
Heinz ist derzeit 49 Jahre alt!
So..... ist das so bei dir?
2. Frage: Was soll die Zeile? System.out.println("100")
Die muss weg. Sie schreibt 100 auf die Konsole. Aber das macht keinen Sinn weil nichts gerechnet wird. Zeile löschen.
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Also bei mir kommt, wie du schon meintest nur 100, das "Heinz ist derzeit 49 Jahre alt" kommt bei mir nicht raus, muss ich das noch irgendwo zusätzlich eintragen?
Also an sich soll ja aus diesem Programm das rauskommen:
"Als Hannes 2 Jahre alt war, war sein Bruder Heinz halb so alt. Gib Hannes aktuelles Alter ein, und erfahre wie alt Heinz jetzt ist.100
Heinz ist jetzt 99 Jahre alt."
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
import java.util.Scanner;
public static void main(String[] args) {
String aufgabe = "Als Hannes 2 Jahre alt war, war sein Bruder Heinz halb so alt. Gib Hannes aktuelles Alter ein, und erfahre wie alt Heinz jetzt ist.";
System.out.println(aufgabe);
Scanner scanner = new Scanner(System.in);
int alterHannes= scanner.nextInt();
int heinzAlter = alterHannes-1;
System.out.println("Heinz ist derzeit "+heinzAlter+" Jahre alt!");
scanner.close();
}
Nimm diesen Code hier. Hab getestet, der funktioniert.
Die Ausgabe auf der Konsole ist dann der Aufgabentext ("aufgabe").
Jetzt kommt das, was du bestimmt falsch gemacht hast: Du musst jetzt in die Konsole reinklicken, da direkt unter wo der Aufgabentext jetzt erschienen ist. Du gibst die Zahl 50 ein und klickst auf Enter.
Jetzt wir angezeigt: "Heinz ist derzeit 49 Jahre alt!"
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
ok jetzt kommt das raus. Ich danke dir vielmals!!!
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Du kannst doch eine neue eigene Antwort posten. Da kannst du dann Bilder einfügen.
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Was ich noch fragen wollte, dieses "Heinz ist derzeit 49 jahre alt" wird nicht mit im Programm geschrieben oder? man müsste extra unten eine 50 schreiben damit das rauskommt, hab ich das richtig verstanden?
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Nein. Das Programm soll ja die 49 Jahre ausrechnen. Sonst bringen ja Computer nichts wenn man trotzdem noch selber rechnen muss, oder?
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Sehr gut, dass es jetzt klappt! Endlich😁 Hoffe du hast auch das meiste verstanden 🙂
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Erstmal Dankeschön!
Wenn ich das jetzt nach den Korrekturen laufen lasse, steht da, dass mit
ein Fehler vorliegt, weißt du woran das liegen kann, muss ich vielleicht etwas anderes hinschreiben?