Nabend,
ich habe grade zwei kleine Probleme, zum einen findet er bei der beim Mothenaufruf eine meiner Übergabevars nicht:
wenn ich ihm die (testweise) aber in der class Schueler fest definieren, krieg ich erreichteNote ebenfalls nich übergeben und er beschwert sich über denn Null-Wert:
Hier meine beiden Klassen:
[HIGHLIGHT="Java"]
import java.io.*;
public class Klasse10B25a
{
private Schueler[] s;
public static void main (String[] args) throws IOException
{
Klasse10B25a k = new Klasse10B25a();
k.menu();
}
public static void menu() throws IOException
{
int anzSchueler = 0;
BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in)); //Erstellen eines Buffered Readers
Klasse10B25a k = new Klasse10B25a();
System.out.println("Klassenverwaltung - 10B25a");
System.out.println("---------------------------------");
k.eingabe();
}
public void eingabe() throws IOException
{
BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in)); //Erstellen eines Buffered Readers
int anzSchueler = 0;
int anzNoten = 0;
System.out.print("Wie viele Schüler sollen aufgenommen werden: ");
anzSchueler = Integer.parseInt(stdin.readLine());
// Dynamische Objekterzeugung
s = new Schueler[anzSchueler];
for (int i = 0; i < anzSchueler; i++) {
s = new Schueler();
}
// Dynamisch-as-Hell Füllen
for (int i = 0; i < anzSchueler; i++) {
System.out.println("\nDie Daten für Schüler #" + i + " eingeben");
System.out.println("---------------------------------");
System.out.print("Vorname: ");
s.vorName = stdin.readLine();
System.out.print("Nachname: ");
s.zuName = stdin.readLine();
System.out.print("Geburtsdatum: ");
s.gebDatum = stdin.readLine();
System.out.print("Wie viele Noten sollen für Schüler #" + i + " vergeben werden: ");
anzNoten = Integer.parseInt(stdin.readLine());
for (int j = 0; j < anzNoten; j++) {
System.out.print((j+1) + ". Erreichte Note: ");
s.erreichteNote[j] = stdin.readLine();
}
}
ausgabe(anzSchueler, j);
}
public void ausgabe(int anzSchueler, int j)
{
Schueler sch = new Schueler();
System.out.println("\nDie Klassenliste der 10B25a");
System.out.println("---------------------------------");
for (int i = 0; i < anzSchueler; i++) {
System.out.print("#" + i + ": " + s.vorName + " " + s.zuName + " - " + s.gebDatum);
System.out.print(sch.Avg(j));
}
}
}[/HIGHLIGHT]
[HIGHLIGHT="Java"]public class Schueler
{
public String zuName;
public String vorName;
public String gebDatum;
public String[] erreichteNote = new String[j];
public int avg;
public double Avg(int j)
{
double avg = 0;
System.out.println(erreichteNote[0]);
for (int i = 0; i < j; i++) {
System.out.println(erreichteNote);
avg = avg + Double.parseDouble(erreichteNote);
}
avg = avg / j;
return avg;
}
}
[/HIGHLIGHT]
Zur Erklärung: Es sollen die Anzahl der Noten dann die Noten im einzelnen abgefragt werden (klappt) und diese dann an die class Schueler überreicht werden (produziert Null-Error), diese soll die Durchschnittsnote (avg) berechnen und zurückgeben.
Ich stehe grade etwas aufm Schlauch. Danke schonmal.
ich habe grade zwei kleine Probleme, zum einen findet er bei der beim Mothenaufruf eine meiner Übergabevars nicht:
Code:
TheMac:Schülerverwaltung iceman$ javac Klasse10B25a.java
Klasse10B25a.java:55: cannot find symbol
symbol : variable j
location: class Klasse10B25a
ausgabe(anzSchueler, j);
^
./Schueler.java:6: cannot find symbol
symbol : variable j
location: class Schueler
public String[] erreichteNote = new String[j];
^
2 errors
wenn ich ihm die (testweise) aber in der class Schueler fest definieren, krieg ich erreichteNote ebenfalls nich übergeben und er beschwert sich über denn Null-Wert:
Code:
Exception in thread "main" java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:991)
at java.lang.Double.parseDouble(Double.java:482)
at Schueler.Avg(Schueler.java:16)
at Klasse10B25a.ausgabe(Klasse10B25a.java:65)
at Klasse10B25a.eingabe(Klasse10B25a.java:55)
at Klasse10B25a.menu(Klasse10B25a.java:21)
at Klasse10B25a.main(Klasse10B25a.java:10)
Hier meine beiden Klassen:
[HIGHLIGHT="Java"]
import java.io.*;
public class Klasse10B25a
{
private Schueler[] s;
public static void main (String[] args) throws IOException
{
Klasse10B25a k = new Klasse10B25a();
k.menu();
}
public static void menu() throws IOException
{
int anzSchueler = 0;
BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in)); //Erstellen eines Buffered Readers
Klasse10B25a k = new Klasse10B25a();
System.out.println("Klassenverwaltung - 10B25a");
System.out.println("---------------------------------");
k.eingabe();
}
public void eingabe() throws IOException
{
BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in)); //Erstellen eines Buffered Readers
int anzSchueler = 0;
int anzNoten = 0;
System.out.print("Wie viele Schüler sollen aufgenommen werden: ");
anzSchueler = Integer.parseInt(stdin.readLine());
// Dynamische Objekterzeugung
s = new Schueler[anzSchueler];
for (int i = 0; i < anzSchueler; i++) {
s = new Schueler();
}
// Dynamisch-as-Hell Füllen
for (int i = 0; i < anzSchueler; i++) {
System.out.println("\nDie Daten für Schüler #" + i + " eingeben");
System.out.println("---------------------------------");
System.out.print("Vorname: ");
s.vorName = stdin.readLine();
System.out.print("Nachname: ");
s.zuName = stdin.readLine();
System.out.print("Geburtsdatum: ");
s.gebDatum = stdin.readLine();
System.out.print("Wie viele Noten sollen für Schüler #" + i + " vergeben werden: ");
anzNoten = Integer.parseInt(stdin.readLine());
for (int j = 0; j < anzNoten; j++) {
System.out.print((j+1) + ". Erreichte Note: ");
s.erreichteNote[j] = stdin.readLine();
}
}
ausgabe(anzSchueler, j);
}
public void ausgabe(int anzSchueler, int j)
{
Schueler sch = new Schueler();
System.out.println("\nDie Klassenliste der 10B25a");
System.out.println("---------------------------------");
for (int i = 0; i < anzSchueler; i++) {
System.out.print("#" + i + ": " + s.vorName + " " + s.zuName + " - " + s.gebDatum);
System.out.print(sch.Avg(j));
}
}
}[/HIGHLIGHT]
[HIGHLIGHT="Java"]public class Schueler
{
public String zuName;
public String vorName;
public String gebDatum;
public String[] erreichteNote = new String[j];
public int avg;
public double Avg(int j)
{
double avg = 0;
System.out.println(erreichteNote[0]);
for (int i = 0; i < j; i++) {
System.out.println(erreichteNote);
avg = avg + Double.parseDouble(erreichteNote);
}
avg = avg / j;
return avg;
}
}
[/HIGHLIGHT]
Zur Erklärung: Es sollen die Anzahl der Noten dann die Noten im einzelnen abgefragt werden (klappt) und diese dann an die class Schueler überreicht werden (produziert Null-Error), diese soll die Durchschnittsnote (avg) berechnen und zurückgeben.
Ich stehe grade etwas aufm Schlauch. Danke schonmal.
Zuletzt bearbeitet: