[英]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中注意到,您在函數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.