Was fehlt in diesem Programm noch?

1 Antwort

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.


Suunshiiiine 
Beitragsersteller
 23.05.2021, 15:14

Erstmal Dankeschön!

Wenn ich das jetzt nach den Korrekturen laufen lasse, steht da, dass mit

Scanner scanner = new Scanner(System.in); 

ein Fehler vorliegt, weißt du woran das liegen kann, muss ich vielleicht etwas anderes hinschreiben?

0
Elumania  23.05.2021, 15:49
@Suunshiiiine

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.

0
regex9  23.05.2021, 16:54
@Elumania
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.

1
regex9  23.05.2021, 17:02
@Suunshiiiine

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();
0
Suunshiiiine 
Beitragsersteller
 23.05.2021, 18:24
@regex9

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(); 
        
    }
}
0
Elumania  23.05.2021, 19:48
@Suunshiiiine

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.

0
Suunshiiiine 
Beitragsersteller
 23.05.2021, 20:37
@Elumania

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."

0
Elumania  23.05.2021, 21:33
@Suunshiiiine
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!"

1
Suunshiiiine 
Beitragsersteller
 23.05.2021, 21:46
@Elumania

ok jetzt kommt das raus. Ich danke dir vielmals!!!

0
Elumania  23.05.2021, 21:49
@Suunshiiiine

Du kannst doch eine neue eigene Antwort posten. Da kannst du dann Bilder einfügen.

0
Suunshiiiine 
Beitragsersteller
 23.05.2021, 21:52
@Elumania

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?

0
Elumania  23.05.2021, 21:53
@Elumania

Aber musst du dann mir hier wieder das mitteilen, sonst sehe ich das nicht 😄

0
Elumania  23.05.2021, 21:55
@Suunshiiiine

Nein. Das Programm soll ja die 49 Jahre ausrechnen. Sonst bringen ja Computer nichts wenn man trotzdem noch selber rechnen muss, oder?

1
Elumania  23.05.2021, 21:56
@Suunshiiiine

Sehr gut, dass es jetzt klappt! Endlich😁 Hoffe du hast auch das meiste verstanden 🙂

1