【问题标题】:Error calling method错误调用方法
【发布时间】:2015-11-28 18:40:52
【问题描述】:

我正在做一项课堂作业,让一枚硬币翻转并记录它落在正面或反面的次数。我很确定这大部分是正确的,但让我失望的部分是调用方法“coinFlip”。当我尝试在计数器类中调用它时,我收到错误消息“coinFlip 无法解析为一种类型”我似乎无法弄清楚如何修复它,或者理解为什么我会收到该消息.任何帮助表示赞赏,提前感谢。

package coinProject;

public class GenericCoin {

    public class coinFlip{
        private int heads = 0;
        private int sideUp; //used to record which side the coin lands on

        public coinFlip(){
            flip();
        }

        public void flip(){
            sideUp = (int) (Math.random() * 2);//used to keep random number under 2
        }

        public boolean headFlip(){
            return (sideUp == heads);
        }

        public String toString(){//limits to only two print options, heads or tails
            return (sideUp == heads) ? "Heads" : "Tails";
        }
    }

}

================================================ ===================================

package coinProject;



public class counter {

    public static void main(String[] args){

        final int flip = 50;
        int headFlips = 0 , tailFlips = 0;

        coinFlip coin = new coinFlip();


        for(int i = 1; i <= flip; i++){
            coin.flip();

            if(coin.headFlip()){
                headFlips ++;
            }
            else{
                tailFlips ++;
            }

            System.out.println(coin.toString());
        }

        System.out.println();//creates gaps after flips
        System.out.println();

        System.out.println("----- Flipped: " + flip);
        System.out.println("----- Heads: " + headFlips);
        System.out.println("----- Tails: " + tailFlips);


    }

}

【问题讨论】:

  • Java 编码风格更喜欢类和包名称以大写字母开头。另外:有coinFlip 内部类GenericCoin 的任何具体原因?
  • coinFlip 不是一个方法,它是一个内部类。
  • 有点意外,我加了一个类,创建项目后开始工作

标签: java methods error-handling


【解决方案1】:

您已将coinFlip 定义为内部类,因此您需要GenericCoin 的实例才能实例化“coinFlip”。所以你需要:

GenericCoin.coinFlip coin = new GenericCoin().new coinFlip();

【讨论】:

  • 准确地说是一个内部非静态类。
【解决方案2】:

阅读Oracle tutorial on nested classes:您需要将coinFlip 类定义为public static class coinFlip 而不是public class coinFlip,后者需要一个封闭类的实例,正如@user2341963 提到的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    相关资源
    最近更新 更多