java.lang.NullPointerException

HD1920

Mitglied
Hallo, ich habe ein Problem mit dem folgenden Code (nutze Eclipse, soll eigentlich die 300-ste Fibonacci-Zahl ausgeben). Und zwar erzeugt er folgende java.lang.NullPointerException:

Exception in thread "main" java.lang.NullPointerException
at fibonacci.PhiFuncs.mulphi(Fibonacci.java:21)
at fibonacci.PhiFuncs.potphi(Fibonacci.java:35)
at fibonacci.PhiFuncs.fib(Fibonacci.java:44)
at fibonacci.Fibonacci.main(Fibonacci.java:7)
Anscheinend tritt der erste Fehler in mulphi() auf. Kann mir irgendjemand helfen, die Exception zu vermeiden (d. h. den Code so zu verbessern, dass sie nicht mehr auftritt)?

Java:
package fibonacci;
import java.math.BigInteger;

public class Fibonacci {
	public static void main(String[] args) {
		int n=300;
		System.out.println(PhiFuncs.fib(n));
	}
}

class PhiFuncs {
	public static BigInteger[] addphi(BigInteger[] a, BigInteger[] b) {
		BigInteger[] retval = new BigInteger[2];
		retval[0] = a[0].add(b[0]);
		retval[1] = a[1].add(b[1]);
		return retval;
	}
	
	public static BigInteger[] mulphi(BigInteger[] a, BigInteger[] b) {
		BigInteger[] retval = new BigInteger[2];
		retval[0] = a[0].multiply(b[0]).add(a[1].multiply(b[1]));
		retval[1] = a[0].multiply(b[1]).add(a[1].multiply(b[0])).add(a[1].multiply(b[2]));
		return retval;
	}
	
	public static BigInteger[] potphi(BigInteger[] a, int b) {
		BigInteger[] retval = new BigInteger[2];
		if (b == 0) {
			retval[0] = BigInteger.ONE;
			retval[1] = BigInteger.ZERO;				
		} else {
			if (b % 2 == 1) {
				return mulphi(potphi(a, (b-1)), a);
			} else {
				return potphi(mulphi(a, a), (b / 2));
			}
		}
		return retval;
	}
	
	public static BigInteger fib(int a) {
		BigInteger[] retval_ = new BigInteger[2];
		BigInteger[] initvals = new BigInteger[2];
		retval_ = potphi(initvals, a);
		BigInteger retval = retval_[1];
		return retval;
	}
}

Edit: Ich habe schon das Forum nach ähnlichen Problemen durchsucht und auch schon Google angestrengt. In fast allen Fällen lag es, anders als bei mir, daran, dass das Objekt nicht mit new initialisiert wurde.
 
Zuletzt bearbeitet:

anti-held

Bekanntes Mitglied
NullPointerExceptions treten auf, wenn ein Objekt null ist oder nicht initialisiert wurde.

Bei dir tritt dieser Fehler auf, weil du deine BigInteger Objekte in den Arrays nicht initialisierst.
 

VfL_Freak

Top Contributor
Moin,

Java:
public static BigInteger fib(int a) 
{
    BigInteger[] retval_ = new BigInteger[2];
    BigInteger[] initvals = new BigInteger[2];
    retval_ = potphi(initvals, a); // !!!
    BigInteger retval = retval_[1];
    return retval;
}

Du deklarierst die Variable "initvals" zwar, aber initialisierst sie nicht.
Darum ist sie Bei der Übergabe an "potphi" immer noch NULL und es kommt bei der Verwendung die NPE!

Gruß
Klaus
 

Lonsdaleit

Aktives Mitglied
Hi,
ich habe auch mal ein kleines Programm geschrieben, dass die nte Fibonacci-Zahl berechnet.
Allerdings etwas kürzer mit vermutlich mehr erforderlichen Rechenschritten.
Wenn du long durch BigInteger ersetzt, solltest du damit zum Ziel kommen.

Das Programm war ursprünglich darauf ausgelegt alle Fibonacci-Zahlen auszugeben bis n.

Java:
public class Fibonacci {

	public void getFibonacci(int n){
		long a=0;
		long b=1;
		
		for(int i=1;i<n;i++){
			b=a+b;
			a=b-a;
			}
		
		System.out.println("Die "+n+"te Fibonacci-Zahl lautet: "+a);
	}
	
	public static void main(String[] args) {
		Fibonacci fibo = new Fibonacci();
		fibo.getFibonacci(10);
		
	}

}

Gruß
Lonsdaleit

€dit: Mit long kommst du bis zur 250sten Fibonaccizahl (434636299069558690)!
 
Zuletzt bearbeitet:

HD1920

Mitglied
@Lonsdaleit: Die Mathematik ist nicht das Problem, "meine" Version sollte deutlich schneller sein. Außerdem ist deine 250ste Fibonacci-Zahl falsch. Sie ist 7896325826131730509282738943634332893686268675876375.
@VfL-Freak: Danke, das war´s! Ich initialisiere initvals nun mit:
Java:
		initvals[0] = BigInteger.ZERO;
		initvals[1] = BigInteger.ONE;
Dann ersetze ich
Code:
retval[1] = a[0].multiply(b[1]).add(a[1].multiply(b[0])).add(a[1].multiply(b[2]));
, welches eine java.lang.ArrayIndexOutOfBoundsException auslöst, durch
Code:
retval[1] = a[0].multiply(b[1]).add(a[1].multiply(b[0])).add(a[1].multiply(b[1]));
und alles funktioniert wie gewünscht.
@anti-held: Ich habe nur initvals nicht initialisiert.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
B java.lang.NullPointerException Allgemeine Java-Themen 11
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
J Threads - java.lang.IllegalThreadStateException Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
T Eclipse Dll einbinden java.lang.UnsatisfiedLinkError nur in Eclipse nicht via javac Allgemeine Java-Themen 1
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
Crooda Compiler-Fehler java.lang.NoClassDefFoundError bitcoinj Allgemeine Java-Themen 1
L Eigenener ClassLoader wirft java.lang.NoClassDefFoundError Allgemeine Java-Themen 0
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
S java.lang.NoClassDefFoundError Allgemeine Java-Themen 5
J Compiler-Fehler java.lang.StringIndexOutOfBoundsException Allgemeine Java-Themen 12
D java.lang.TypeNotPresentException Allgemeine Java-Themen 3
L java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 10
H java.lang.OutOfMemoryError bei der wiederholten Erzeugng von Threads Allgemeine Java-Themen 8
B Variable class in java.lang.Object Allgemeine Java-Themen 11
N java.lang.IllegalMonitorStateException: object not locked by thread before notify() Allgemeine Java-Themen 2
T ProcessBuilder (java.lang.NoClassDefFoundError) Allgemeine Java-Themen 2
T java.lang.AssertionError: Allgemeine Java-Themen 4
T java.lang.ClassCastException: Allgemeine Java-Themen 4
P Java Probleme - java.lang.Thread.run(Unkown Source) Allgemeine Java-Themen 10
B java.lang.UnsupportedClassVersionError Allgemeine Java-Themen 12
M cannot be cast to java.lang.Comparable Allgemeine Java-Themen 5
B JNI - java.lang.UnsatisfiedLinkError Allgemeine Java-Themen 21
E Interpreter-Fehler java.lang.ExceptionInInitializerError Allgemeine Java-Themen 12
C java.lang.ClassCastException Allgemeine Java-Themen 3
P Fehler beim Programmstart: java.lang.NoClassDefFound Allgemeine Java-Themen 12
T java.lang.ClassCastException Allgemeine Java-Themen 7
B Java - java.lang Allgemeine Java-Themen 12
sylo java.lang.NoSuchMethodError: Obwohl Methode vorhanden Allgemeine Java-Themen 8
H Applet java.lang.reflect.InvocationTargetException Allgemeine Java-Themen 9
M SerialPort RS232 : java.lang.NoSuchFieldError: eis Allgemeine Java-Themen 2
U java.lang.ClassNotFoundException: .jar Allgemeine Java-Themen 8
G NoClassDefFoundError: java/lang/Object Allgemeine Java-Themen 4
W java.lang.ClassCastException Allgemeine Java-Themen 10
N Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.p Allgemeine Java-Themen 4
N java.lang.InstantiationException Allgemeine Java-Themen 10
D replaceAll => no such java.lang.NoSuchMethodError Allgemeine Java-Themen 5
G java.lang.LinkageError: loader constraints violation. Allgemeine Java-Themen 3
O java.lang.NumberFormatException für normalen integer Allgemeine Java-Themen 4
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
Y java.lang.UnsupportedClassVersionError: Allgemeine Java-Themen 5
G java.lang.ClassCastException Allgemeine Java-Themen 3
E java.lang.outofmemory über windows-cmd ändern Allgemeine Java-Themen 6
I java.lang.UnsatisfiedLinkError: Allgemeine Java-Themen 8
J Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 26
J java.lang.StackOverflowError Debugging? Allgemeine Java-Themen 51
D java.lang.UnsatisfiedLinkError Allgemeine Java-Themen 5
S Fortran Funktion mit JNI aufrufen: java.lang.UnsatisfiedLink Allgemeine Java-Themen 2
S java.lang.UnsatisfiedLinkError mit JNI Allgemeine Java-Themen 6
reibi java.lang.Class - Resource - Solaris Allgemeine Java-Themen 17
S Exception in Thread "main" java.lang.NoClassDef. b Allgemeine Java-Themen 2
M java.lang.UnsupportedClassVersionError: Bad version number i Allgemeine Java-Themen 5
J java Thread java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 7
O "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBounds Allgemeine Java-Themen 6
B Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 12
G Error: java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 2
S java.lang.OutOfMemoryError: Java Allgemeine Java-Themen 22
E Java Fehlermeldung java.lang.NoClassDefFoundError Allgemeine Java-Themen 3
G Problem mit java.lang.reflect.Field Allgemeine Java-Themen 15
P Kompilerfehler: at java.lang.ClassLoader.loadClassInternal(U Allgemeine Java-Themen 16
H java.lang.ExceptionInInitializerError Allgemeine Java-Themen 7
D java.lang.IllegalMonitorStateException: current thread not Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 15
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
T Profifrage: java.lang.StackOverflowError bei BigInteger Allgemeine Java-Themen 27
M java.lang.OutOfMemoryError Allgemeine Java-Themen 2
W java.lang.ClassNotFoundException Allgemeine Java-Themen 10
F java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 22
B Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 5
S fehlermeldung java.lang.OutOfMemoryError Allgemeine Java-Themen 5
S Exception in thread "main" java.lang.StringIndexOu Allgemeine Java-Themen 9
H Skalieren von Image -> java.lang.OutOfMemoryError - WARUM Allgemeine Java-Themen 18
J java.lang.ArrayIndexOutOfBoundsException Allgemeine Java-Themen 2
P Hilfe zu java.lang.Object Allgemeine Java-Themen 3
K java.lang.reflect - Getter und Setter ermitteln Allgemeine Java-Themen 8
G jTable-Problem --> java.lang.OutOfMemoryError Allgemeine Java-Themen 5
G Java.lang.Compiler Allgemeine Java-Themen 3
E Exception in Thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 5
F java.lang.OutOfMemoryError Allgemeine Java-Themen 13
R java.lang.String maximale Anzahl der Zeichen Allgemeine Java-Themen 7

Ähnliche Java Themen


Oben