簡體   English   中英

Java:調用方法並從另一個類實例化對象時出現問題

[英]Java: Problems when calling methods and instantiating objects from another class

我是一名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循環中的拼寫錯誤是我自己的。 它們不在實際程序中。 我現在修復了它們。

  1. 確保驅動程序和Coin類在同一個程序包中(或您導入的Coin程序包在其中),看來它們都在默認程序包中。
  2. 在驅動程序javac *.java之前(或同時)編譯Coin.java
  3. 執行以下驅動程序時,請確保指定包含當前文件夾的類路徑

    java -cp。 FlipRace

最后,

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

應該

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

我還沒有詳盡搜索您的代碼是否有更多錯別字。

通過從Coin類中清除此代碼來嘗試一下

Coin mycoin = new Coin();

    public Coin(){

    flip();
    }

並在FlipRace中的for循環行中進行了更改

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

我認為這里可以提供的最佳建議是研究Java軟件包的基礎。 這是一個不錯的起點: Java軟件包教程

它涵蓋了以下主題:

  • 創建和使用包
  • 使用包成員
  • 管理源文件和類文件

閱讀這些內容后,您應該能夠理解所面臨的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM