Einzelnen Beitrag anzeigen
Alt 05.05.2005, 21:11   #9 (permalink)
tele
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 

Registriert seit: 29.10.2003
Beiträge: 14.561

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: [Java]Notenspiegel+Durchschnitt berechnen

Sorry kann dir leider keine Tipps zur Problemdomäne geben, aber ein paar generelle Java Tipps bekommst du von mir (ob du willst oder nicht :P )

1. Klassennamen beginnen per Konvention mit einem Großbuchstaben

2. Methoden, die weder einen Rückgabewert, noch eine Signatur haben, brauchen keinen public modifier. (Was interssiert sonst ein externes Objekt was diese Methode macht?)

3. du solltest IMMER block-Klammern setzen, z.b.
Zitat:
Zitat von Jlagreen
Code:
 public void notenspiegel() {
 
     for (int i = 0; i <noten.length; i++)
spiegel[i] = 0;
 
          for (i = 0; i <spiegel.length; i++)
          {
             spiegel[noten[i]]++;
          }
 
}
hattest du ja vorher vertan, weil du die {} klamern weggelassen hast.

selbst bei einzeiligen Statements daher klammern setzen (alle anderen Programmierer danken dir, wenn sie den code lesen müssen )

4. Du kannst Arrays mit dynamischer Länge initialisieren z.b.
Code:
  private int anzahlSchueler=0;
  public int[] noten;


  public void eingabe() {

   System.out.println("Geben sie die Anzahl der Schueler ein" );
   anzahlSchueler=StdIn.intInput();
   noten = new int[anzahlSchueler];   
   for (int x=0; x<namen.length;x++){
   System.out.println("Geben sie eine Note ein:" );
   noten[x]=StdIn.intInput();
5. ich weiß nicht was hinter "StdIn.intInput();" steckt, aber ich wollte bloß mal nachfragen, ob diese methode selbst schon alle möglichen Exceptions fängt. Wenn nicht solltest du dringend (DAU-Sicherheit) diese Statements mit try-catch blöcken verzieren.

6. Aus Performance-Gründe rate ich davon ab, ganze Packages zu importieren
( import java.util.*; ) benutze stattdessen IDE features die den automatischen Import übernehmen (Organize Imports in Eclipse)

7. Welche IDE verwendest du?

8. Ebenfalls aus Performance Gründen, rate ich dir explizit einen Kontruktor zu formulieren. Ebenfalls solltest du den new Operator erst dort benutzen, nicht schon bei der Deklaration.

9. Warum sind die ganzen Member-Variablen

Code:

public class notendurch {
public int[] noten = new int[16];
public String[] namen = new String[8];
public double durchschnitt;
public int[] spiegel =new int[8];
nicht private? Aus gründen der Sicherheit und Datenkapselung würde ich dir das oder protected anraten. stelle lieber geeignete Getter und Setter methoden zur Verfügung (in Eclipse kannst du diese Generieren lassen)

10. Vergiss das switch statement - kannst du eh nur auf Primitives anwenden. Und im späteren richtigen leben hast du seeehr selten mit echten primitives zu tun. folgendes Kontrukt leistet äquivalentes:

Code:
if(i = 0) {
   doSomething();
} else if(i = 1) {
   doSomethingElse();
} else if(i = 2) {
   doWhatever();
} else {
   doSonstwas();
}
tele ist offline   Mit Zitat antworten