簡體   English   中英

關於方法/類的JAVA Questissn

[英]JAVA questissn regarding methods/classes

我對JAVA有點陌生。 我在大學里一直在使用它,但是我不得不承認,我的老師絕對沒有幫助。 她自己幾乎不了解JAVA,但這本身就是另一個問題。 我一直對方法和類的工作方式感到困惑。 我正在創建使用兩個文件,一個“主”文件和一個“測試”文件的程序。 我似乎無法正確獲取“主”文件,因為編譯器不斷告訴我,即使找到了它們,它們也找不到。 在“測試”文件中,我似乎無法讓編譯器識別“主”文件中的方法。 我已確保文件位於同一文件夾中。 為了簡單起見,我想將它們合並到一個文件中,但是我會失去分數。 到目前為止,我已經包含了我的代碼。 我不是在尋找“修復”解決方案,我只是想弄清楚為什么它不起作用。 非常感謝您的幫助,因為我的老師沒有太多幫助,謝謝!


主文件:

import java.util.Scanner;

class Fruit1 {
    static Scanner console = new Scanner(System.in);

    public static void main(String args[]) {

        String color;
        String taste;
    }

    public Fruit1() {
        // generic constructor

        color = "red";
        taste = "yum";

    }

    public Fruit1(String aColor, String aTaste) {
        // constructor with parameters
        color = aColor;
        taste = aTaste;
    }

    public Fruit1(String bColor, String bTaste) {

        color = bColor;
        taste = bTaste;
    }

    String getTaste() {
        return taste;
    }

    String getColor() {
        // Accessor method
        return color;
    }
}

測試文件:

import java.util.*;

public class Fruit1Test {

    static Scanner console = new Scanner(System.in);

    public static void main(String args[]){

        Fruit1 a = new Fruit1("pinkish-red", "sweet-tart");
        Fruit1 l = new Fruit1("yellow", "tart/sour");

        a.taste();
        a.color();
        l.taste();
        l.color();

        System.out.println("Your apple is " + a.color + "in color and has a " + a.taste + " taste. ");
        System.out.println("Your lemon is " + l.color + "in color and has a " + l.taste + " taste. ");
        System.out.println();
    }
}

您永遠不會為對象Fruit1聲明字段的colortaste 相反,您在main方法中創建了變量。

我建議您閱讀一些有關Java的基本教程 ,以掌握更多信息。 (Oracle還提供了更高級的教程 。)

我在Fruit1中注意到,您在函數main()中聲明了成員變量。 從外觀上看,Fruit1Test應該有一個main()fxn,而Fruit1應該沒有。 從main()中取出那些成員變量,並在Fruit1中刪除main()(將其放在“ console”變量下)。

我還注意到,您有2個都接受String的構造函數。 編譯器可能也會對此抱怨。 我面前沒有編譯器,但這就是我從外觀上就能看到的。

a.taste(); 將嘗試找到方法taste(); 在您的主文件中,即Fruit1.java文件中。 但是,由於未找到相同的內容,因此僅在未找到taste()情況下,它將在編譯時引發錯誤...

所有下面的4條語句將失敗,因為它們不存在...

a.taste();
a.color();
l.taste();
l.color();

當您使用以下語句創建類的對象時,已經通過使用構造函數public Fruit1(String aColor, String aTaste){口味和顏色。

Fruit1 a = new Fruit1("pinkish-red", "sweet-tart");

我相信您現在要打印顏色和味道的值。 要打印這些,請使用您擁有的getter方法(getColor()和getTaste())

System.out.println("Your apple is " + a.getColor() + " in color and has a " + a.getTaste() + " taste. ");

System.out.println("Your Lemon is " + l.getColor() + " in color and has a " + l.getTaste() + " taste. ");

注意

您不需要再次編寫public Fruit1(String bColor, String bTaste){ ,因為您已經在上面定義了...。

另外,您的以下語句應該在構造函數之前並且不在psvm中

String color;
String taste;

如果您不清楚,請告訴我...

祝好運

對於第一個問題,您似乎誤解了如何聲明實例字段。 當您應該直接在類中創建它們時,您正在main函數中創建它們。

關於第二個問題,請參見Fahim Parkar的評論(如果適用於您的情況)。 順便說一句,一個好習慣是每個文件始終只有一個類/接口/枚舉,並且文件具有該類的相同名稱(第二部分在Java中可能是必需的,我不記得了-它適用於public類,但我也不知道它是否也適用於“默認,受包保護的”類)。

如果名稱正確,OTOH,則可能是因為您的“主”文件未編譯,所以“測試”文件沒有找到它而導致的錯誤...

PS我剛剛注意到您有兩個具有相同簽名(參數數量和相同參數類型)的構造函數。 您必須刪除一個。

暫無
暫無

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

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