2014-01-13 50 views
-1

我試圖拿兩個浮點值,看哪一個更大,並返回true或false。這是我的代碼:基本多類Java程序錯誤

import java.util.Scanner; 

public class Four_Ten 
{ 
    public static void main(String []args){ 
     double num1, num2 = 0; 

     Scanner scan = new Scanner(System.in); 

     System.out.println("Enter a floating point value:"); 
     num1 = scan.nextFloat(); 
     System.out.println("Enter another floating point value:"); 
     num2 = scan.nextFloat(); 
     System.out.println(calcGreater(num1, num2)); 
    } 

    public double calcGreater(double a, double b){ 
     boolean greater = false; 
     if (a > b){ 
      greater = true; 
     } 
     if (b > a){ 
      greater = false; 
     } 
     return greater; 
    } 
} 

我收到以下錯誤:

non-static method calcGreater(double, double) cannot be referenced from a static context

我該如何解決這個問題?

+5

您認爲錯誤信息的含義是什麼? –

+0

谷歌錯誤。你會找到解決方案。 –

+0

閱讀Java中的'static'關鍵字.. –

回答

0

public double calcGreater(double a, double b)不是static方法,這樣你就不能調用non-static方法從static method.add static鍵字calcGreater()如下

public static double calcGreater(double a, double b) 

或者

實例化對象和調用方法如下

Four_Ten a=new Four_Ten(); 
a.calcGreater(double a, double b); 

不僅如此:返回類型不匹配

public double calcGreater(double a, double b){ // expected return type double 
    boolean greater = false; 
    if (a > b){ 
     greater = true; 
    } 
    if (b > a){ 
     greater = false; 
    } 
    return greater; // you are returning boolean 
} 
+0

如何返回布爾值並將兩個浮點值同時傳遞到類中?這可能嗎? – VTedd

+0

如果你想這樣做,使用自定義對象(創建一個類和返回類型)並返回。 –

+0

這更有意義。謝謝 – VTedd

1

嘗試添加關鍵字static,這是一個boolean不是double -

public static boolean calcGreater(double a, double b){ 
    // return (a > b); /* why not a > b? */ 
    boolean greater = false; 
    if (a > b){ 
    greater = true; 
    } 
    if (b > a){ 
    greater = false; 
    } 
    return greater; 
} 
2
public class Four_Ten 
{ 
    public static void main(String []args){ 
    double num1, num2 = 0; 

    Scanner scan = new Scanner(System.in); 

    System.out.println("Enter a floating point value:"); 
    num1 = scan.nextFloat(); 
    System.out.println("Enter another floating point value:"); 
    num2 = scan.nextFloat(); 
    Four_Ten obj=new Four_Ten(); 
    System.out.println(obj.calcGreater(num1, num2)); 
} 

public double calcGreater(double a, double b){ 
    boolean greater = false; 
    if (a > b){ 
     greater = true; 
    } 
    if (b > a){ 
     greater = false; 
    } 
    return greater; 
} 
} 
+0

預期返回類型是'double' while return'boolen' –

0

創建類Four_Ten的對象,然後調用方法類似

Four_Ten obj = new Four_Ten(); 
obj.calcGreater(num1,num2); 

您會收到錯誤,因爲n靜態成員不能直接被靜態成員訪問。在這種情況下,main()是靜態的,而calcGreater()是非靜態的,所以你需要一個對象從靜態main()函數中訪問非靜態函數calcGreater()。