Java:调用方法和从另一个类实例化对象时出现的问题

时间:2014-11-05 03:44:15

标签: java class object methods instantiation

我是一名AP计算机程序设计专业的学生,​​我在理解如何调用一个类中定义的驱动程序的方法以及从非驱动程序的构造函数中创建驱动程序类中的对象方面遇到了很多麻烦。类。我的书有以下几个类,程序的目的是模拟硬币的翻转:

import java.util.Random;

public class Coin{

        private int HEADS = 0;
        private int TAILS = 1;

        private int face;

        Coin mycoin = new Coin();

        public Coin(){

        flip();
        }

        public void flip(){

            face = (int) (Math.random() * 2);
        }

        public boolean isHeads(){

            return (face == HEADS);
        }

        public String toString(){

            String faceName;

            if (face == HEADS)
                faceName = "Heads";
            else
                faceName = "Tails";

            return faceName;
        }
}

以下是本书中的示例驱动程序:

public class FlipRace
{
  public static void main(String[] args)
  {
    final int NUM_FLIPS = 1000;
    int heads = 0, tails = 0;

    Coin myCoin = new Coin();

    for (int count = 1; count <= NUM_FLIPS; count++)
    {
      myCoin.flip();

      if (myCoin.isHeads())
        heads++;
      else
        tails++;
    }

    System.out.println("The number of flips: " + NUM_FLIPS);
    System.out.println("The number of heads: " + heads);
    System.out.println("The number of tails: " + tails);   
  }
}

我遇到的问题是,当我尝试重新创建驱动程序或制作任何驱动程序时,驱动程序似乎无法调用构造函数的自定义类。我得到的错误如下:

cannot find symbol
  symbol:  Class Coin
  location:  Class (name of driver program)

老实说,我不知道问题是什么。有人告诉我,为了访问构造函数需要一个单独的.java文件,但我找不到办法。那个人错了吗?我应该将main方法和构造函数都放在一个程序中吗?如果不是这样,我如何调用另一个类的方法?

我一直在努力解决这个问题差不多一个星期,所以任何帮助都会受到赞赏。

编辑:for循环中的拼写错误是我自己的。它们不在实际程序中。我现在已修好它们了。

3 个答案:

答案 0 :(得分:0)

  1. 确保驱动程序和Coin类位于同一个程序包中(或者导入程序包Coin所在的程序包中),看起来您将它们都放在默认程序包中。
  2. 在驱动程序Coin.java之前(或同时)编译javac *.java
  3. 确保在执行驱动程序时指定包含当前文件夹的类路径,如

    java -cp。 FlipRace

  4. 最后,

    for (inc count = 1; counr <= NUM_FLIPS; count++)
    

    应该是

    for (int count = 1; count <= NUM_FLIPS; count++)
    

    我没有详尽地搜索您的代码以获取更多错别字。

答案 1 :(得分:0)

通过从Coin Class

中获取此代码来试试这个
Coin mycoin = new Coin();

    public Coin(){

    flip();
    }

并在FlipRace的for循环行中进行了更改

    for (int count = 1; count <= NUM_FLIPS; count++)

答案 2 :(得分:0)

我认为这里可以提供的最佳建议是研究Java包的基础知识。这是一个很好的起点:Java packages tutorial

它涵盖了以下主题:

  • 创建和使用包
  • 使用套餐会员
  • 管理源文件和类文件

阅读完毕后,您应该能够理解您所面临的问题。