2016-09-18 61 views
0

我的代碼不會運行我得到的錯誤「無法在原始類型double上調用sqrt(double)」這就是我編譯它時得到的唯一錯誤,否則除Math.sqrt(數學)行外不會導致錯誤。幫幫我?由於某種原因,我的代碼不會運行,我不能調用sqrt(double)原始類型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'是Java –

+0

一類對於未來的問題,如果你刪除了不會引起任何問題的代碼,這將有助於('average','slope', 'difference'和'square'),並且複製和粘貼你得到的錯誤信息。 – Teepeemm

回答

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

你正在創建一個新的變量Math,下一行,你指的是新的變量,因爲它陰影的全局類Math。所以它試圖呼叫double.sqrt(double),這不存在。

+0

爲什麼要將一個變量命名爲Math?是不是混淆和反對編碼慣例? –

+0

@LakshithaRanasingha當然,但問題是爲什麼代碼產生了特定的錯誤,而不是我是否會寫相同的代碼。 – Kiskae

+0

哎呀..是的,我沒有看到那部分。乾杯。 –

1

你是hiding內置類Math通過使用它作爲一個變量。你可以做

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

因爲,Math是Java類,你不能用這個作爲一個對象變量。而是使用一些其他的變量名:

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

'Math'作爲一個變量名是有效的,它只是覆蓋'java.lang.Math'。這就是賦值成功的原因,但下一行是導致錯誤的原因。 – Teepeemm

相關問題