Java Out, In und switch

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Java Out, In und switch

    Also,

    hallo erstmal =) habe versucht einen code zu schreiben der 4 zufalls Noten von 4 verschiedenen Menschen wiedergeben soll, weiss aber nicht weiter irgendwo ist der wurm drin und ich denke es liegt an den Methoden in Start...

    würde dann anschließend gerne eine Switch anweisung einbauen, die dem user dann erlaubt zwischen: Eingabe , Ausgabe und Ende zu entscheiden ... das eingeben über die Tastatur geschieht über einen " In " Klasse, die es dem user erlaubt Daten über die Tastatur zu übergeben.

    Ich würde mich sehr über jegliche Hilfe freuen und wünsch euch allen einen schönen Abend.

    der code :

    Quellcode

    1. import java.util.*;
    2. class Datensatz {
    3. private String name;
    4. private int id;
    5. int note1, note2, note3;
    6. private static int nextUniqueID = 1;
    7. Datensatz(String theName) {
    8. name = theName;
    9. id = nextUniqueID;
    10. nextUniqueID++;
    11. }
    12. public String getName() {
    13. return name;
    14. }
    15. public int getID() {
    16. return id;
    17. }
    18. }
    19. public class Start {
    20. static Random rnum = new Random();
    21. static void eingabe(Datensatz ds) {
    22. ds.note1 = rnum.nextInt(6);
    23. ds.note2 = rnum.nextInt(6);
    24. ds.note3 = rnum.nextInt(6);
    25. }
    26. private static void ausgabe(ArrayList localdata) {
    27. for (int i = 0; i < localdata.size(); i++)
    28. System.out.println(localdata.get(i));
    29. System.out.println("________________________");
    30. }
    31. public static void main(String[] args) {
    32. String[] namen = { "Meier", "Müller", "Schulte", "Schulze" };
    33. ArrayList sdata = new ArrayList();
    34. Datensatz data;
    35. for (int i = 0; i < 4; i++) {
    36. data = new Datensatz(namen[i]);
    37. eingabe(data);
    38. sdata.add(data);
    39. }
    40. ausgabe(sdata);
    41. }
    42. }
    Alles anzeigen


    Danke fürs lesen ltheonel

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von ltheonel ()

  • Also, bin grad irgendwie an der stelle und bin mir ziemlich sicher das das switch so nicht geht will am ende halt Namen selber eingeben können und zwischen den Optionen Ausgabe, Eingabe, Beenden wechseln können.

    Quellcode

    1. public static void main(String[] args) {
    2. Out.print("1.Eingabe");
    3. Out.print("2.Ausgabe");
    4. Out.print("3.Beenden:");
    5. int a;
    6. In.read( a);
    7. switch (int a){
    8. case 1: String[] namen ={"Meier", "Müller","Schulte","Schulze"};
    9. ArrayList sdata = new ArrayList();
    10. Datensatz data;
    11. for (int i=0; i<4;i++) {
    12. data = new Datensatz(namen[i]);
    13. eingabe(data);
    14. sdata.add(data);
    15. }
    16. ausgabe(sdata);
    17. }
    18. }
    Alles anzeigen
  • Also da "a" in Grundtyp ist und Grundtypen nicht als Referenz übergeben werden, behaupte ich mal, dass "a" hiernach immernochnicht initialisiert ist:

    Quellcode

    1. int a;
    2. In.read( a);


    Wie sieht die read Methode aus? Will sie vielleicht Integer als Param? Oder gibt sie ein int zurück?

    PS: SyntaxHighlighting (unter dem Texteingabefeld) nutzen und passenden Themennamen überlegen :whistling:
  • bei dit sollte es a = In.readInt() heißen normalerweise .. (ich hatte schon mit In.java un Out.java zu tun gehabt).
    deine Switch anweisung sollte sein : switch (a) und nicht switch (int a).

    ich verstehe deinen einsatz hier nicht, aber ich glaube es geht viel einfacher wenn du 2 Strings machst, einer für die Namen und einer für die Noten.
    Die Noten sollten mit der Methode :
    Math.floor(Math.random() * x) + y;
    x ist hier das maximum .. und y das minimum.
    das heißt wenn du die Noten zwischen 1 --> 5 haben willst dann machst du :
    Math.floor(Math.random() * 5) + 1;

    du erzeugst dann 4 zufällige zahlen wie du es oben erwähnt hast .. und dann ist das ganze problem gelöst ..
    Ich versteh nicht wieso du eine Klasse Datensatz hast, und 4 oder 5 Methoden, wenn du es ganz einfach, in 20 Zeilen schreiben kannst.

    so habe ich es gemacht :

    Java-Quellcode

    1. class EasyCoder {
    2. public static void main (String [] args) {
    3. String namen[] = new String[4]; //array für die Namen
    4. double noten[] = new double[4]; //array für die Noten
    5. int counter = 0; //counter .. zähler
    6. int value; //eingabe
    7. do {
    8. Out.println("1.Eingabe");
    9. Out.println("2.Ausgabe");
    10. Out.println("3.Beenden:");
    11. value = In.readInt(); //eingabe einlesen
    12. switch (value) {
    13. case 1 : //wenn eingabe 1 ist .. namen einlesen
    14. while(counter != 4) { //4 namen einlesen
    15. Out.print((counter+1)+"ter"+" Name eingeben : ");
    16. namen[counter] = In.readLine();
    17. counter++;
    18. }
    19. counter = 0; //zähler zurücksetzen
    20. break;
    21. case 2 : // wenn eingabe 2 ist .. noten erzeugen und ausgeben
    22. if(namen[counter] == null) //wenn davor keine namen eingegeben wurden
    23. Out.println("Sie müssen erstmal die Namen eingeben ..");
    24. else {
    25. while(counter != 4) { //4 Noten erzeugen , und das ganze ausgeben
    26. noten[counter] = Math.floor(Math.random() * 5) + 1;
    27. Out.println("Name : "+namen[counter]+" hat die Note "+noten[counter]);
    28. counter++;
    29. }
    30. counter = 0; //zähler zurücksetzen
    31. }
    32. break;
    33. default :
    34. }
    35. } while(value != 3); //aufhören wenn die eingabe 3 ist
    36. Out.println("Beendet"); //beenden
    37. }
    38. }
    Alles anzeigen
  • Wow, vielen dank erstmal für die tollen Antworten =) hab mir alles in ruhe angeguckt, bin aber schon vorher auf diesen code gekommen:



    Quellcode

    1. public static void main(String[] args) {
    2. String[] namen ={"Meier", "Müller","Schulte","Schulze"};
    3. ArrayList sdata = new ArrayList();
    4. Datensatz data;
    5. System.out.println("0: Ausgeben");
    6. System.out.println("1: Eingeben");
    7. System.out.println("2: Beenden");
    8. int auswahl; auswahl = In.readInt();
    9. switch(auswahl) {
    10. case 0:
    11. ausgabe(sdata);
    12. break;
    13. case 1:
    14. for (int i=0; i<4;i++) {
    15. data = new Datensatz(namen[i]);
    16. eingabe(data);
    17. sdata.add(data);
    18. }
    19. break;
    Alles anzeigen






    Ps: @ /etc/shadow, wenn man 2 eingibt bei der Aufforderung und die namen eingeben soll, endet es nicht ist irgendwie eine endlosschleife bei mir... villt mach ich auch nur was falsch...



    bye and thx ltheonel
  • Quellcode

    1. import javax.swing.*;
    2. import java.awt.event.*;
    3. /**
    4. * * Write a description of class GUI here. * *
    5. *
    6. * @author (your name) *
    7. * @version (a version number or a date)
    8. */
    9. public class SuperGUI implements ActionListener {
    10. JButton button;
    11. SuperGUI gui = new SuperGUI();
    12. gui.los();
    13. public static void main(String[] args){
    14. public void los() {
    15. JFrame frame = new JFrame();
    16. button = new JButton("klick mich");
    17. button.addActionListener(this);
    18. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    19. frame.getContentPane().add(button);
    20. frame.setSize(300,300);
    21. frame.setVisible(true);
    22. }
    23. public void actionPerformed(ActionEvent event) {
    24. button.setText("Ich wurde gedrückt");
    25. }
    26. }
    27. }
    Alles anzeigen

    //UPDATED Formatierung by d0nut



    es lässt sich nicht kompilieren... müsste aber eigentlich richtig sein bitte um hilfe...