2017-01-24 4 views
-2

Ich bekomme eine Division durch Null Fehler, die keinen Sinn macht, weil beide meiner Variablen Daten über sie haben.java.lang.ArithmeticException: dividiere durch Null Fehler

String str = "54"; 
int i = 0, b = 0; 

while(i < str.length()){ 
    b = b + Integer.parseInt(Character.toString(str.charAt(i))); 
    i++; 
} 

int ratings = (b/str.length()); 

Dies ist die Linie der Fehler bezieht, b einen Wert von 9 hat (es ist eine ganze Zahl) und str eine Länge von 2 (die auch eine ganze Zahl ist) hat.

Wenn ich versuche, auf die Abteilung zuzugreifen, gibt es mir diesen Fehler, aber wenn ich auf beide Variablen zugreife, bekomme ich ihre Werte ohne jedes Problem.

Ich habe auch versucht, eine separate Variable namens strLength zu erstellen und die Länge dort abgerufen, aber der Fehler bleibt bestehen.

+1

Sind Sie sicher, dass str den Wert enthält, sollte es? Fügen Sie diese Zeile - 'System.out.println (" "+ str.length());' vor der Division hinzu, nur um sicherzugehen. – TDG

+0

Computer lügen nicht! Können Sie den Code vor dieser Zeile posten? –

+0

Es gibt wirklich zwei Möglichkeiten: entweder 'str.length()' ist wirklich aus irgendeinem Grund Null, oder der Fehler kommt von einem anderen Code. Wenn Sie uns nur eine Codezeile zeigen, ist es wirklich schwer zu sagen, was genau vor sich geht. –

Antwort

0

Ich kann Ihr Problem nicht simulieren, aber ich habe ein Beispiel und es funktioniert korrekt. Wenn jedoch str leer ist, tritt der Fehler java.lang.ArithmeticException:/durch Null auf. Bitte posten Sie weitere Informationen, wenn der Fehler weiterhin besteht.

Exemple:

public static void main(String[] args) { 
    int b = 9; 
    String str = "AB"; 

    int ratings = (b/str.length()); 

    System.out.println(ratings); 
} 
+0

mein Problem ist, dass ich eine Zeichenfolge von Zahlen habe, gerade jetzt ist es 54, aber es wird sich in der Zukunft ändern. Ich muss alle Ziffern aus der Zeichenkette extrahieren und addiere sie, wandle sie in eine Ganzzahl um und dividiere dann durch die Länge dieser Zeichenkette (ich muss einen Durchschnitt machen) –

+0

Sie können ein Beispiel für Zeichenkettenzahlen posten? –

+0

Durch seine Erklärung habe ich so verstanden: öffentliche statische void main (String [] args) { String a = "12345"; //123456 .........54 String [] x = a.split (""); int add = 0; für (Zeichenfolge x1: x) { add + = Integer.parseInt (x1); } System.out.println ("Avarage:" + (add/a.length())); } –

Verwandte Themen