Frage von HewaR, 36

Weiß irgendjemand wieso das nicht funktioniert Es ist eine Programm das ich geschrieben habe könnte es in eclipse einfügen..?

import java.util.Scanner;

public class Anfang { private static Scanner in;

public static void main(String[] args) {
    
    in = new Scanner(System.in);
    
    System.out.println("Wie viele Sorten Kaffee bieten Sie an?");
    
    int anzahl = in.nextInt();
    
    Kaffee[] kaffeliste = new Kaffee[anzahl];
    
    for(int i = 0; i < anzahl; i++) {
        System.out.println("Wie soll der Kaffe heißen?");
        String name = in.next();
        System.out.println("Wie teuer soll der Kaffe sein?"); 
        double preis = in.nextInt();
        
        Kaffee k = new Kaffee(name, preis);
        k.setName(name);
        k.setPreis(preis);
        kaffeliste[i] = k;
    
    }
    
    System.out.printf("%n%n Preisliste für Kaffee: %n");
    
    for (Kaffee i: kaffeliste) {
        System.out.printf("%n %10s", i.getName() );
        System.out.printf(" %.2f%n", i.getPreis() );
                
    }
}

}

public class Kaffe { private String name; private double preis;

public Kaffee(String name, double preis) {
    
    this.name = name;
    this.preis = preis;
}

    public String getName() {
        return name;
        
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPreis() {
        return preis;
    }
    
    public void setPreis(double preis) {
        this.preis = preis;
    }
    

}

Antwort
von karinili, 24

Was mir als erstes ins Auge sticht: Warum benützt du setter, wenn du die Werte bereits beim Erzeugen des Objekts mitgibst? Stichwort reduntante Datenstrukturen.

Klassenname und Konstruktor müssen gleich benannt sein (ein e zu wenig/ zu viel).

Für jede eigene Klasse, sollte außerdem eine Datei erzeugt werden.

Kommentar von Omnivore08 ,

Für jede eigene Klasse, sollte außerdem eine Datei erzeugt werden.

Ist das bei Java nicht sogar Pflicht? Java ist ja leider nicht so schön wie C# :-)

Kommentar von karinili ,

Jap, ist es.
Das private static Scanner, kannst du übrigens weglassen bzw in die Main schreiben, funktioniert genauso.
Du brauchst das "private static" nur, wenn du eine Klasse mit Konstruktor initialisierst. Anfang hat keinen Konstruktor ;)

Antwort
von Tschoo, 15

public class Anfang { private static Scanner in;

dass sieht doch sehr komisch aus??

und danach soll

public static void main(String[] args) {

kommen -- aber du weist schon, wie die grundsätzlich Syntax in c oder c++ ist (nehme mal an, es ist sowas)

Kommentar von SirNik ,

es ist so auch ok. was du da siehst ist die Definition und die Deklaration. Scanner - Definition und in - Deklaration. die Initialisierung findet in der main () statt: in = new Scanner (System.in); in java darf man das bissle anders machen als in z.b. in C es handelt sich hier auch im Java und nicht um C oder C++ :D hoffe konnte aufklären

Antwort
von PwalbXYZ, 20

Was GENAU funktioniert denn nicht?

Keine passende Antwort gefunden?

Fragen Sie die Community