Hi,
Ich bekomme bei meinem Programm immer eine Nullpointerexception in der Methode LineareFunktion.getSchnitt() und ich hab keine Ahnung wo die her kommt:
Hauptklasse
[Java]package linearefunk;
import java.io.*;
public class Hauptklasse {
public static void main(String[] args) throws IOException{
int nummer;
int nummer2;
int anzahl = 5;
double[] wert = new double[5];
LineareFunktion[] lf = new LineareFunktion[anzahl];
InputStreamReader inStream = new InputStreamReader( System.in ) ;
BufferedReader stdin = new BufferedReader( inStream );
System.out.println("Wie viele Funktionen möchten Sie erstellen?");
anzahl = Integer.parseInt(stdin.readLine());
for (int y = 0; y < anzahl; y++)
{
System.out.println("Die Funktion lf" + (y+1) + " wurde erstellt. Möchten Sie (1) Steigung und Y-A.-abschnitt, (2) 2 Punkte (x/y) oder (3) 1 Punkt (x/y) und die Steigung eingeben?");
switch (Integer.parseInt(stdin.readLine()))
{
case 1:
System.out.println("Geben Sie nun jeden Wert einzeln ein (m, b)");
wert[0] = Double.parseDouble(stdin.readLine());
wert[1] = Double.parseDouble(stdin.readLine());
lf[y] = new LineareFunktion(wert[0], wert[1]);
break;
case 2:
System.out.println("Geben Sie nun jeden Wert einzeln ein (x1, y1, x2, y2)");
wert[0] = Double.parseDouble(stdin.readLine());
wert[1] = Double.parseDouble(stdin.readLine());
wert[2] = Double.parseDouble(stdin.readLine());
wert[3] = Double.parseDouble(stdin.readLine());
lf[y] = new LineareFunktion(wert[0], wert[1], wert[2], wert[3]);
break;
case 3:
System.out.println("Geben Sie nun jeden Wert einzeln ein (x1, y1, x2, y2)");
wert[0] = Double.parseDouble(stdin.readLine());
wert[1] = Double.parseDouble(stdin.readLine());
wert[2] = Double.parseDouble(stdin.readLine());
lf[y] = new LineareFunktion(wert[0], wert[1], wert[2]);
break;
}
}
for (int y = 0; y < anzahl; y++)
{
lf[y].getFunktion("lf" + (y+1));
}
System.out.println("Mit welcher Funktion wollen Sie weiter arbeiten? (1,2,3,...)");
nummer = Integer.parseInt(stdin.readLine());
System.out.println("Möchten Sie (1) den Schnittpunkt mit einer anderen Funktion berechnen oder (2) eine Wertetabelle erstellen?");
switch (Integer.parseInt(stdin.readLine()))
{
case 1:
System.out.println("Welcher Schnittpunkt soll berechnet werden? (1,2,...)");
nummer2 = Integer.parseInt(stdin.readLine());
Punkt S = lf[nummer].getSchnitt(lf[nummer2]);
System.out.println("Der Schnittpunkt liegt bei S(" + S.getX() + "|" + S.getY() + ").");
}
}
}[/Java]
Klasse für die Linearen Funktionen
[Java]package linearefunk;
public class LineareFunktion {
private double m;
private double b;
public LineareFunktion (double st, double ab)
{
m = st;
b = ab;
}
public LineareFunktion (double x1, double y1, double x2, double y2)
{
m = (y2 - y1) / (x2 - x1);
b = y1 - (m * x1);
}
public LineareFunktion (double x, double y, double st)
{
m = st;
b = y - (m * x);
}
public void getFunktion (String n)
{
System.out.println("Die Funkttion " + n + " lautet: y=" + m + "*x+" + b);
}
public double getSteigung ()
{
return m;
}
public double getAbschnitt ()
{
return b;
}
public double getNullstelle ()
{
return -b / m;
}
public Punkt getSchnitt (LineareFunktion lfu)
{
double x = (b - lfu.getAbschnitt()) / (lfu.getSteigung() - m);
double y = m*x+b;
Punkt S = new Punkt ("S", x, y);
return S;
}
}[/Java]
Klasse Punkt
[Java]package linearefunk;
public class Punkt {
private String name;
private double x;
private double y;
public Punkt () {}
public Punkt(double xw, double yw)
{
x = xw;
y = yw;
}
public Punkt(String n, double xw, double yw)
{
name = n;
x = xw;
y = yw;
}
public Punkt(Punkt Pu)
{
name = Pu.getName();
x = Pu.getX();
y = Pu.getY();
}
public void setName (String n)
{
name = n;
}
public String getName ()
{
return name;
}
public void setX (double xw)
{
x = xw;
}
public void setY (double yw)
{
y = yw;
}
public double getX ()
{
return x;
}
public double getY ()
{
return y;
}
}[/Java]
Ich bekomme bei meinem Programm immer eine Nullpointerexception in der Methode LineareFunktion.getSchnitt() und ich hab keine Ahnung wo die her kommt:
Hauptklasse
[Java]package linearefunk;
import java.io.*;
public class Hauptklasse {
public static void main(String[] args) throws IOException{
int nummer;
int nummer2;
int anzahl = 5;
double[] wert = new double[5];
LineareFunktion[] lf = new LineareFunktion[anzahl];
InputStreamReader inStream = new InputStreamReader( System.in ) ;
BufferedReader stdin = new BufferedReader( inStream );
System.out.println("Wie viele Funktionen möchten Sie erstellen?");
anzahl = Integer.parseInt(stdin.readLine());
for (int y = 0; y < anzahl; y++)
{
System.out.println("Die Funktion lf" + (y+1) + " wurde erstellt. Möchten Sie (1) Steigung und Y-A.-abschnitt, (2) 2 Punkte (x/y) oder (3) 1 Punkt (x/y) und die Steigung eingeben?");
switch (Integer.parseInt(stdin.readLine()))
{
case 1:
System.out.println("Geben Sie nun jeden Wert einzeln ein (m, b)");
wert[0] = Double.parseDouble(stdin.readLine());
wert[1] = Double.parseDouble(stdin.readLine());
lf[y] = new LineareFunktion(wert[0], wert[1]);
break;
case 2:
System.out.println("Geben Sie nun jeden Wert einzeln ein (x1, y1, x2, y2)");
wert[0] = Double.parseDouble(stdin.readLine());
wert[1] = Double.parseDouble(stdin.readLine());
wert[2] = Double.parseDouble(stdin.readLine());
wert[3] = Double.parseDouble(stdin.readLine());
lf[y] = new LineareFunktion(wert[0], wert[1], wert[2], wert[3]);
break;
case 3:
System.out.println("Geben Sie nun jeden Wert einzeln ein (x1, y1, x2, y2)");
wert[0] = Double.parseDouble(stdin.readLine());
wert[1] = Double.parseDouble(stdin.readLine());
wert[2] = Double.parseDouble(stdin.readLine());
lf[y] = new LineareFunktion(wert[0], wert[1], wert[2]);
break;
}
}
for (int y = 0; y < anzahl; y++)
{
lf[y].getFunktion("lf" + (y+1));
}
System.out.println("Mit welcher Funktion wollen Sie weiter arbeiten? (1,2,3,...)");
nummer = Integer.parseInt(stdin.readLine());
System.out.println("Möchten Sie (1) den Schnittpunkt mit einer anderen Funktion berechnen oder (2) eine Wertetabelle erstellen?");
switch (Integer.parseInt(stdin.readLine()))
{
case 1:
System.out.println("Welcher Schnittpunkt soll berechnet werden? (1,2,...)");
nummer2 = Integer.parseInt(stdin.readLine());
Punkt S = lf[nummer].getSchnitt(lf[nummer2]);
System.out.println("Der Schnittpunkt liegt bei S(" + S.getX() + "|" + S.getY() + ").");
}
}
}[/Java]
Klasse für die Linearen Funktionen
[Java]package linearefunk;
public class LineareFunktion {
private double m;
private double b;
public LineareFunktion (double st, double ab)
{
m = st;
b = ab;
}
public LineareFunktion (double x1, double y1, double x2, double y2)
{
m = (y2 - y1) / (x2 - x1);
b = y1 - (m * x1);
}
public LineareFunktion (double x, double y, double st)
{
m = st;
b = y - (m * x);
}
public void getFunktion (String n)
{
System.out.println("Die Funkttion " + n + " lautet: y=" + m + "*x+" + b);
}
public double getSteigung ()
{
return m;
}
public double getAbschnitt ()
{
return b;
}
public double getNullstelle ()
{
return -b / m;
}
public Punkt getSchnitt (LineareFunktion lfu)
{
double x = (b - lfu.getAbschnitt()) / (lfu.getSteigung() - m);
double y = m*x+b;
Punkt S = new Punkt ("S", x, y);
return S;
}
}[/Java]
Klasse Punkt
[Java]package linearefunk;
public class Punkt {
private String name;
private double x;
private double y;
public Punkt () {}
public Punkt(double xw, double yw)
{
x = xw;
y = yw;
}
public Punkt(String n, double xw, double yw)
{
name = n;
x = xw;
y = yw;
}
public Punkt(Punkt Pu)
{
name = Pu.getName();
x = Pu.getX();
y = Pu.getY();
}
public void setName (String n)
{
name = n;
}
public String getName ()
{
return name;
}
public void setX (double xw)
{
x = xw;
}
public void setY (double yw)
{
y = yw;
}
public double getX ()
{
return x;
}
public double getY ()
{
return y;
}
}[/Java]
Zuletzt bearbeitet: