2016-09-18 2 views
0

aus irgendeinem Grund wird mein Code nicht ausgeführt bekomme ich den Fehler "kann nicht sqrt (double) auf den primitiven Typ double aufrufen" das ist der einzige Fehler, den ich bekomme, wenn ich es so alles kompiliere sonst verursacht nur die Math.sqrt (math) -Zeile einen Fehler. Hilfe?Kann nicht aufrufen sqrt (double) auf dem primitiven Typ double

public class Confused { 

public static double average(int x, int y) { 
double ave= (x+y)/2.0; 
return ave; 
} 
public static double slope(int x1, int x2, int y1, int y2){ 
double slope= (y2-y1)/(x2-x1); 
return slope; } 

public static int difference(int x, int y) { 
int diff=x-y; 
return diff; } 

public static int square(int x) { 
int power1=(int)Math.pow(x, 2); 
return power1; 

} 
public static double distance (int x1, int x2, int y1, int y2) { 
double Math= (square(difference(x2,x1))) + (square(difference(y2,y1))); 
double dist= Math.sqrt(Math); 
return dist; 

} 

public static void main(String[] args) { 
    System.out.println(average(2,3)); 
    System.out.println(slope(1,2,3,4)); 
    System.out.println(difference(10,5)); 
    System.out.println(square(10)); 
    System.out.println(distance(2,3,6,8)); 

} 

} 
+0

'Math' ist eine Klasse in Java –

+0

Für zukünftige Fragen, es würde helfen, wenn Sie den Code entfernt, die keine Probleme verursachen (' average', 'slope', "difference" und "square") und kopieren Sie die Fehlermeldung, die Sie erhalten, und fügen Sie sie ein. – Teepeemm

Antwort

3
double Math= (square(difference(x2,x1))) + (square(difference(y2,y1))); 
double dist= Math.sqrt(Math); 

Sie eine neue Variable Math, in der nächsten Zeile zu schaffen verweisen Sie auf die neue Variable, da sie die globale Klasse Math Schatten. So versucht es double.sqrt(double), die nicht existiert.

+0

Warum möchten Sie eine Variable als Math benennen? ist das nicht verwirrend und gegen Kodierungskonventionen? –

+0

@LakshithaRanasingha Definitiv, aber die Frage war, warum der Code diesen spezifischen Fehler erzeugte, nicht ob ich den gleichen Code schreiben würde. – Kiskae

+0

oops .. ja, ich habe diesen Teil nicht gesehen. Prost. –

1

Sie sind hiding die integrierte Klasse Math, indem Sie es als Variable verwenden. Sie könnten

double result = square(difference(x2, x1)) + square(difference(y2, y1)); 
return Math.sqrt(result); 
0

Da Math eine Klasse in Java ist zu tun, können Sie dies nicht als Objektvariable verwenden. Verwenden Sie stattdessen eine andere Variablenname:

double operation = (square(difference(x2,x1))) + (square(difference(y2,y1))); 
double dist = Math.sqrt(operation); 
+0

'Math' ist als Variablenname gültig, es überschreibt nur' java.lang.Math'. Deshalb ist die Zuweisung erfolgreich, aber die nächste Zeile ist diejenige, die den Fehler verursacht. – Teepeemm

Verwandte Themen