-2
package mypackage; 

import java.util.Random;

interface SharedConstants
{
    int NO=0;
    int YES=1;
    int MAYBE=2;
    int LATER=3;
    int SOON=4;
    int NEVER=5;
}

class B implements SharedConstants
{

Random rand=new Random();

    int ask()
    {
        int prob=(int) (100 * rand.nextDouble());
        if (prob<30)
            return NO;
        else if(prob<60)
            return YES;
        else if(prob<75)
            return LATER;
        else if(prob<90)
            return SOON;
        else
            return NEVER;
    }

}

class c implements SharedConstants

{
    static void answer(int result)

    {
        switch(result)
        {
            case NO:
                System.out.println("No");
                break;
            case YES:
                System.out.println("Yes");
                break;
            case LATER:
                System.out.println("Later");
                break;
            case SOON:
                System.out.println("Soon");
                break;
            case NEVER:
                System.out.println("Never");
                break;
        }
    }
}

class interfacedem1

{
    public static void main(String[] args)

    {
        System.out.println("prog starts");
        B dew=new B();
        answer(dew.ask);
        answer(dew.ask);
        answer(dew.ask);
        answer(dew.ask);
        System.out.println("prog ends");

    }
}   
4

3 回答 3

7

ask()是一种方法,而不是一个领域。您需要将其作为方法调用:

answer(dew.ask());

此外,您可能应该将您的界面替换为enum. 它更适合存储枚举常量:

enum Probabilities {
    NO, 
    YES, 
    MAYBE,
    LATER,
    SOON,
    NEVER;
}

并将类从实现接口中排除。

于 2013-08-10T16:31:45.763 回答
1

首先,您在 之后缺少括号ask(),例如:

answer(dew.ask());
              ^^

其次,ask()应该是public

public int ask()
...
于 2013-08-10T16:32:18.947 回答
0

answer()静态方法,所以使用类名调用它。
ask()是一种使用“()”调用它的方法。更换你的

  answer(dew.ask);

  c.answer(dew.ask());
于 2013-08-10T16:44:18.890 回答