[Java] Wie kann ich eine Variable Größe eines Arreays einlesen?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Labernet, 27. November 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 27. November 2009
    Wie kann ich eine Variable Größe eines Arreays einlesen?

    Hallo liebe RR-ler Ich habe eine Frage:
    Wie kann ich eine Variable Größe eines Arreays einlesen?

    Ausschnitt meines Notenberechner Programms:

    Code:
    import java.io.*;
    
    
    public class NotenBerechner 
    {
     
     
     Double [][]dblStudent = new Double [anzahlKlausuren][3];//Hier soll das Eingelesene rein
     
     private class Gerade 
     {
     
     public double c; // Y-Achsenabschnitt
     public double m; // Steigung 
    
     public Gerade (double x1, double x2, double y1, double y2)
     {
     
     m = (y2-y1)/(x2-x1);
     c = y1 - m * x1;
     }
     }
     
     private class Eintrag 
     {
     double grenze; // Grenze
     String schulnote;
     double NoteSchNum;
     
     }
     
    
     public void berechnen() throws IOException 
     {
     //Einlesen
     BufferedReader con =
     new BufferedReader(new InputStreamReader(System.in));
     System.out.print("Wie viele Klausuren wollen Sie eintragen ? : ");
     String anzahlKlausuren=con.readLine();// wie geht "anzahlKlausuren" oben ins Array?
     //int anzKla = Integer.parseInt(anzahlKlausuren); ???? Muss ich das machen für das Array?
     




    Wäre suuper wenn ihr mir helfen könntet. Die "anzahlKlausuren" Variable will einfach nicht ins Array, aber warum?
    Gruß Labernet
     

  2. Anzeige
    Heute: Deals & Sale mit stark reduzierten Angeboten finden.
  3. #2 27. November 2009
    AW: Wie kann ich eine Variable Größe eines Arreays einlesen?

    definier deinen array einfach neu

    Code:
    this.dblStudent = new Double[a][b];
     
  4. #3 27. November 2009
    AW: Wie kann ich eine Variable Größe eines Arreays einlesen?

    Oder Benutz einfach einen Vector aus dem Package java.util (Java.Util.Vector)!

    Vectoren haben dein einfachen Vorteil, dass sobald du ein Object daraus löscht der Rest einfach nachgerückt wird, sprich du kannst einfach mitten drin was rauslöschen!
    Und du kannst einfach adden ohne zu überlegen an welche Position du das ganze einfügen willst!
    Werden außerdem auch automatisch vergrößert solltest du ein neues Object einfügen :)

    Haben zwar den kleinen Nachteil etwas langsamerer zu arbeiten als herkömliche Arrays, aber sofern du nicht 500 oder mehr Vars darin speicherst gibts da kein Problem :)
     
  5. #4 28. November 2009
    AW: Wie kann ich eine Variable Größe eines Arreays einlesen?

    hmm die 2. version verstehe ich nicht. Das mit den Vektoren.

    Die erste Version scheint elegant zu sein, doch wenn ich "this.dblStudent = new Double[a];", anstatt "Double [][] dblStudent = new Double [eintrag von der Konsole][3]" eingebe, dann wird die geschweifte Klammer davor rot und unten bei "public void berechnen() throws IOException" wird das void und throws ebenfalls rot.


    Was muss ich verändern was mache ich falsch?
     
  6. #5 28. November 2009
    AW: Wie kann ich eine Variable Größe eines Arreays einlesen?

    So wie ich das sehe liest du hier nur Integerwerte raus...

    Also kannst du einfach einen Vector in der Form anlegen:
    Vector<Integer> values = new Vector<Integer>();

    Ich weiß nicht wie bewandert du in Generik bist, aber ums einfach verständlich zu machen der Objecttyp in der Spitzenklammer lässt dich nur Integer - Werte in den Vector einfügen!

    Dir Generik hier zu erklären würde den Rahmen eines Posts komplett sprengen :D

    Dann kannst du einfach mit values.add(.......Integer......); einen Wert in den Vector einfügen!
    Herausbekommen tust du die Werte dann wieder mit get(); <-- bin ich mir grad nicht sicher... :p --> Siehe Javadoc

    Somit hast du ganz einfach einen dynamischen Speicher an Integerwerten und musst nicht 2 mal irgendwelche Files auslesen!

    Weil in dem Fall von dir müsstest du das komplette File 2 mal auslesen um zu wissen wieviel Werte darin sind, sprich die Größe des Arrays, und dann zum Schluss noch einmal lesen um die Werte herauszubekommen *pfui*
     
  7. #6 28. November 2009
    AW: Wie kann ich eine Variable Größe eines Arreays einlesen?

    Warum nicht einfach die Int anzKla dann oben ins Array?

    Ich würde auch das Array als Int Array deklarieren...

    Also im Prinzip:

    int [][] dblStudent = new Int [anzKla][3];

    und unten wandelst du ja den String in ne Int um...

    int anzKla = Integer.parseInt(anzahlKlausuren);
     
  8. #7 28. November 2009
    AW: Wie kann ich eine Variable Größe eines Arreays einlesen?

    Hi,

    ich glaube vossi mein ArrayList :)
    java.util.ArrayList

    und dann gehts so wie er gesagt hat

    mit add was hinzufügen, mit get holste es wieder

    eine array list definierst du so

    ArrayList<int> intListe = new ArrayList<int>();

    aber ich glaube bei deinem fall brauch man das nicht
    machs einfach so

    [code
    ]import java.io.*;

    public class NotenBerechner
    {


    Double [][]dblStudent; //hier einfach erstmal nur die variable deklarieren, nicht definieren

    private class Gerade
    {

    public double c; // Y-Achsenabschnitt
    public double m; // Steigung

    public Gerade (double x1, double x2, double y1, double y2)
    {

    m = (y2-y1)/(x2-x1);
    c = y1 - m * x1;
    }
    }

    private class Eintrag
    {
    double grenze; // Grenze
    String schulnote;
    double NoteSchNum;

    }


    public void berechnen() throws IOException
    {
    //Einlesen
    BufferedReader con =
    new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Wie viele Klausuren wollen Sie eintragen ? : ");
    String anzahlKlausuren=con.readLine();
    //hier jetzt einfach das Array definieren
    dblStudent = new Double [anzahlKlausuren][3];

    [/code]
     
  9. #8 29. November 2009
    AW: Wie kann ich eine Variable Größe eines Arreays einlesen?

    Danke an alle... hat wunderbar geklappt. Ich hab die letzte (die simpelste) Version genommen.
    doch jetzt habe ich noch ein großes Problem! Ich probiere schon seit Stunden, aber es schein einfach nicht zu klappen: Ausschnitt:

    Code:
    double studentenzahl=0;
    switch(notenSystem.toUpperCase().charAt(0))
     {
     case 'B':
     umrechnung = new Gerade(punkteFuerBestanden, punkteFuerEins, 4.0, 1.0);
     
     while(true){ 
     System.out.print("Punkte "+(studentenzahl+1)+". Student: ");
    
     -->>??? for (int i=0;i<studentenzahl;i++)
     -->> ??? dblStudent[i][0]= studentenzahl;
     
     punkte = Double.parseDouble(con.readLine());
     
     if (punkte==-1)
     
     
     break;
    
    So kurzer Hinweis: B steht für Notensystem BA. Ich will eine laufende StudentenID in die erste Reihe des Arrays eintragen (also in die Nullte Reihe). Er trägt auch fleißig ein sobald ich eine neue erreichte Punktzahl von einem Studenten eingebe. (Ausgabe:Student 1.0 Punkte XY, Student 2.0 Punkte YX...)

    Doch der dramatische Kanackpunkt ist folgender:

    Wenn ich am schulss (zur Kontrolle)
    System.out.println("Studenten Id nummer 4 :"+dblStudent[4][0]);
    eingebe, dann müsste er doch 4 ausgeben.

    Aber nein er gibt mir immer die aktuelste Zahl aus.
    Also wenn ich 5 Studenten eintrage dann gibt er mir die 5 aus.
    Ergo trägt er überall das gleiche ein.
    Aber warum??

    Bitte nochmals um Hilfe, Gruß Labernet
     
  10. #9 29. November 2009
    AW: Wie kann ich eine Variable Größe eines Arreays einlesen?

    for (int i=0;i<studentenzahl;i++)
    -->> ??? dblStudent[0]= studentenzahl;

    studentenzahl ist bei dir das Höchste

    for (int i=0;i<studentenzahl;i++){
    dblStudent[0]= i;
    }
    ....
     
  11. #10 29. November 2009
    AW: Wie kann ich eine Variable Größe eines Arreays einlesen?

    Nein ich meine keine ArrayList...
    Es sind alles Listen von HashMap angefangen bis Vectoren und ArrayListen...
    Alle haben Vor- und Nachteile bzgl Geschwindigkeit und max Speichergröße!

    Wobei man zum Bsp mit einer ArrayList im Nachhinein nix mehr anfangen kann, du kannst zum Bsp einer JList, jetz auf GUIS bezogen, einfach einen Vector zuordnen, auch viele andere Objecte können mit Vectoren arbeiten!

    Das ist mit einer ArrayList nicht möglich...
    Sofern er es nicht weiterverwenden will ists kein Problem, aber was ich eigentlich sagen wollte ICH MEINTE VECTOREN :D
     
  12. #11 29. November 2009
    AW: Wie kann ich eine Variable Größe eines Arreays einlesen?



    Ja klar da gebe ich dir Recht, aber im weiterführenden muss ich die Notenergebnisse Speichern. Und da ist das gleiche. Immer nur der Aktuelste Wert wird gespeichert. Deshalb nochmal: Wie kann ich direkt die studentenzahl speichern. Die springt ja immer um eins hoch sobald die Eingabe des letzten Studenten getätigt wurde. Und das möchte ich speichern in mein Array. Mir hat man irgendwas von Casten erzählt, hab mich schlau gemacht aber dennoch nix verstanden.

    /Closed da ich besser einen neuen thread für dieses Problem eröffne (wenns erlaubt ist)
     

  13. Videos zum Thema
Die Seite wird geladen...