[Java] Variable+1 oder ++ in array einlesen, aber wie?

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

  1. 30. November 2009
    Variable+1 oder ++ in array einlesen, aber wie?

    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
     
  2. 30. November 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    er gibt 5 aus, weil du mit array[4][] auf das fünfte element zugreiftst, du beginnst bei 0 zu zählen, nicht bei 1.

    ausserdem wird deine Variable Studentenzahl nirgends verändert/erhöht, da mit (studentenzahl+1) die variable mit 1 addiert wird, die variable veränder sich dadurch aber nicht. Das kannst du nur mit einer erneuten Zuweisung oder den incremet operatoren (++) erreichen.

    Bei den Incrementoperatoren bitte bedenken:

    variable++ gibt ERST den AKTUELLEN wert von variable weiter, und erhöht variable DANACH um 1.
    ++variable erhöht ERST den aktuellen wert der variable, und gibt sie DANACH weiter.
     
  3. 30. November 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    An welcher Stelle innerhalb deiner Schleife veränderst du die Variable Studentenanzahl denn überhaupt?
    Das der Wert überall gleich ist, sollte klar sein - in deiner for-Schleife setzt du ja für alle Elemente des Arrays [0] auf einen Wert.

    Nebenbei bemerkt, warum nutzt du für die Studentenanzahl ein Double? Ist Double nicht für Gleitkommazahlen gedacht?
     
  4. 1. Dezember 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?




    Ich speichere später auch die aktuellen Noten ins Array, und den erreichten Durchschnitt, deswegen das Double.

    Und ja klar das mit,"fängt bei null an zu zählen" ist mir klar. Doch egal welche stelle ich ausgebe, es kommt immer überall der letzte wert raus.

    habs auch schon mit studentanzahl=studentanzahl +1 bzw ++ versucht, leider auch ohne erfolg, was mache ich falsch??


    Ich hatte gehofft, da Studentenanzahl sich um eins erhöht , ich jedesmal wenn das geschieht (und meine Laufvariable I sich um eins erhöht) schön jeder einzelnen I-stelle den Wert zuweisen kann.
     
  5. 1. Dezember 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    Also ich hab noch nicht so ganz verstanden, was genau du wie willst und was da wie wo nicht ganz passt und wo deine Ausgaben herkommen, es wäre schon ganz gut nächstes mal den ganzen wichtigen code zu sehen nicht nur nen ausschnitt mit dem man nicht viel anfangen kann.
    Anhand dessen was da steht erklär ich dir mal was passiert:

    du machst ne while(true) schleife.
    dort in dieser schleife printest du mit "System.out.print("Punkte "+(studentenzahl+1)+". Student: ");" die studentenanzahl aus und inkrementierst sie,bzw willst das tun, soweit ich das verstanden habe.

    dann allerdings machst du eine for-schleife und weist JEDEM wert von i=0 bis i=studentenanzahl-1 den aktuellen wert von studentenanzahl zu. wenn ich dich richtig verstanden habe liegt in genau dieser zeile das problem, denn eigentlich willst du doch nur "dblStudent[studentenanzahl-1][0]=studentenanzahl" haben und nicht in allen "dblStudent[0]" oder nicht? d.h. du kannst dir die schleife eigentlich sparen, es reicht einfach nur die eine zeile.

    sollte das die lösung sein, nach der du gesucht hast, denn poste nächstes mal mehr infos und das ganze vor allem verständlicher, auch der volle code könnte hilfreich sein, falls nicht, denn mach das ganze jetzt nochmal bitte^^

    desweiteren hast du nen echt ekligen programmierstil. wieso zur hölle speicherst du die studentenid in der 0ten spalte des arrays, die noten danach und in der letzten spalte dann den durchschnitt?
    wir wärs mit: ich erstelle ein Objekt student für jeden studenten, dieses bekommt nen int array von noten, nen int id und nen double durchschnitt [wobei du die genauigkeit eines doubles wohl kaum brauchen wirst und ein float es also mindestens genausgut tun dürfte]. diese studenten-objekte speicherst du dann in nem anderen arrray von studenten. so haste a) kein zweidimensionales array und b) ist das ganze viel sauberer und objektorientierter
     
  6. 1. Dezember 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    Hört sich blöd an, aber dies ist meine Semesterarbeit. Und mehrere Kumpel sind hier auch unterwegs. Deswegn habe ich da ein wenig Angst ... zu viel zu posten. Ich hoffe du verstehst das. Es ist aber leider, da gabe ich dir recht zu meinem eigenen Nachteil, da ihr zuviel Rätzeln müsst, sorry.

    Ich habe da genaue Vorgaben, da ich ja für verschiedene Notensysteme dies machen muss. Die einen schneiden die Kommazahl ab. Die anderen habens genau. Und die normale Schule arbeitet mit 1+ bis 6+.



    Jetzt zur Frage, genau das war die Lösung, viiieelen Dank, doch nun ist es sowie es sein sollte, aber (jetzt kommt das aber^^). Ich kann die -1 nicht in das array packen. Ich muss im array parsen mit (int), sonst kommen konvertierungs Fehler. Soo wie bekomme ich die -1 da rein?

    dblStudent[(int)studentenzahl][0]= studentenzahl;
     
  7. 1. Dezember 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    naja, denn nehme man den vorschlag von oben und nehme dann nicht int[] noten sondern float[] noten, immernoch besser, als das was du da versuchst. desweiteren ist nen float für ne 1+=0,7 meeeehr als ausreichend, der double ist nur platzverschwendung im speicher. ich kann mir irgendwie auch nciht vorstellen, dass deine vorgabe das genau SO vorsieht. der professor gehört erschossen, der euch das so aufzwingt

    das ist der nachteil (was oop angeht sogar nen ziemlich großer) wenn du die studentenid's als doubles speicherst. deswegen ja der vorschlag von oben^^

    [(int)studentenzahl-1], [(int)(studentenzahl-1)] oder wahlweise [((int)stundentenanzahl)-1]

    ob das erste geht, bin ich mir nicht sicher, wegen der klammern. das zweite und dritte sollte aber eigentlich funzen und auch äquivalent sein. im endeffekt ists ja egal ob du vorher die 1 abziehst und dann castest oder obs erst castest und dann -1 rechnest
     
  8. 2. Dezember 2009
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    Jo hast recht. Werde es versuchen.Das Problem hat sich geklärt. Jetzt funst alles wie geschmirt. Vieelen Dank! Habe viel rumprobiert bis es geklapt hat. Jetzt brauche ich noch ein letztesmal deine Hilfe:
    ausschnitt.jpg
    {img-src: //img81.imageshack.us/img81/5020/ausschnitt.jpg}



    Ich muss die Ausgabe Nebeneinander ausgeben, sonst gibt es Abzug. (die drei Blöcke nach "-1")
    Wie mach ich das?
     
  9. 2. Dezember 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    Wenn du nur

    Code:
    System.out.print()
    verwendest hast du keinen Zeilenumbruch. Also die 2 printf und das 1. println in print umändern, dann sollte es klappen. Das 2. (das leere) println solltest du aber drinlassen.

    Ich muss in nächster zeit wahrscheinlich was ähnliches coden. Könntest du mir den Code eventuell zukommen lassen?

    €dit: oh hab mir das nicht genau genug angeguckt. Musst noch n kleinbisschen mehr umschreiben. Das printf spezifische Zeug fällt natürlich auch raus. Wenn du printf nur genommen hast du deine double Werte auf eine Stelle hinterm Komma zu runden musst du das jetzt eben anders machen. Sind aber nur ~3 Zeilen mehr Code.
     
  10. 2. Dezember 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    Dir ist schon klar, was das \n im printf() macht oder? Genau -> einen Newline
    d.h. die kannste einfach rauslassen[zumindest beim ersten printf]. bei dem mittleren println() solltest du wie der vorposter schon sagte print() benutzen, da println ein automatisches \n an das ende der ausgabe setzt.
    oder aber du packst das ganze in 1 langes printf() sollte auch problemlos funktionieren [mit nur einem \n am ende^^]

    edit: *graus* allein wenn ich schon "punkte 2.0. student" lese... wenn du die studentenids schon als double speicherst, denn gib die zeile doch auch mit nem printf aus, sodass da das .0 wegfällt^^ ist ja grausam so
     
  11. 4. Dezember 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    hehe jo mittlerweile schoonn.... hab das ganze ding jetzt umfomuliert in ein string array


    Wie kann man alles in gleichen Abständen nacheinander ausgeben?? also ohne dass ab einem gewissen block eine der Zeilen verrutscht? hats da so ein Tabulatorzeichen ?
     
  12. 4. Dezember 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    Ein Tab ist aber auch nur ne auffüllung auf 8 Zeichen glaub ich. Wenn du also in einer Zeile Stundent 5 und in der andren Student 123456789 hast, denn ists natürlich nicht mehr in einem block, sondern wieder verrutscht. aber das ist ja normal bei tabs

    Du speicherst Zahlen in einem String Array? Omfg, wer hat dir eigentlich programmieren beigebracht? Oder was speicherst du in nem String Array?
     
  13. 7. Dezember 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    Ok werds mal versuchen mit /t.

    Also ich Speicher in diesem String array = Laufende Studentenzahlnummer, Die Note, und dazu die erreichten Punkte.

    Deshalb String weil nur ein Array machen will. Und zwar ich hab ja verschiedene Notensysteme Unter anderem das "normale" Schulsystem, in der ausschließlich Ganzzahlen und Strings vorkommen ... also 1+, 2-, 5-6 usw. Und ich hatte schwierigkeiten gerade diese Stringwerte in mein Double bzw Fließkomma Array zu speicher. Deshalb entschied ich mich alle Ergebnisse in String umzuwandeln und in ein String array zu speichern. Wenns einen einfachen anderen Weg gibt... diese benannten String zeichen in ein Dobuble, bzw Fließkomma array zu speichern, dann wäre es suupi wenns erläutert wird.

    Achja, Wenn cih erstmal 2-3 Jahre Programmiererfahrung habe, dann istmeine Formatierung und meine Denkweise bestimmt eine andere. Man muss ja ganz klein Anfangen ;-)
     
  14. 7. Dezember 2009
    AW: Variable+1 oder ++ in array einlesen, aber wie?

    Naja, abhängig vom Notensystem könntest du durchaus die Noten in Objekten Kapseln.

    aus 1+ kannst du ja eh keinen durchschnitt berechnen? oder nimmst du nur die 1 dafür?

    denn machst ne neue klasse
    Code:
    class blanotensystemnote{
    private int hauptnote; private string suffix
    }
    da rein noch nen konstruktor, welcher die "note" dann erstellt und dann nen array von eben diesen noten. Die toString() methode kannste dann überschreiben mit z.b.
    Code:
    public String toString{
    return hauptnote+suffix;
    }
    denn reicht einfach nur nen
    Code:
    System.out.println(note)
    und schon steht da die 1+ wie gewünscht. Den durchschnitt berechnen kannst du dann aber z.b. nur mit der basisnote ohne das suffix.

    ich glaube nämlich ehrlichgesagt nicht, dass der dir das 1+ ohne zu meckern in den wert 1 parst

    wenn du das ganze dann vereinheitlichst kannst du dir dazu nen interface schreiben und denn einfach ein array von allen möglichen noten (also nen array von objekten des interfaces) anlegen [wahlweise kannst du das sonst sicherlich auch per vererbung realisieren, was vielleicht sinniger ist, als nen interface, jetzt wo ich so drüber nachdenk]
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.