簡體   English   中英

嘗試調用另一個類中的方法以在 IF 語句中使用

[英]Trying to call a method in another class to use in a IF statement

我試圖在運行 IF 語句時調用一個類,該語句將詢問用戶是否想用英語或西班牙語查看程序。 西班牙語代碼在不同的類別中,我想在用戶選擇以西班牙語查看程序並忽略下面寫的英文代碼時調用它。

Error: Java cannot find symbol
symbol: method Spanish()
location: variable span of type source.Spanish

下面是我的第二堂課(我想打電話):

package source;

import java.util.Scanner;
import java.lang.String;

public class Spanish {
    public Spanish() {}
}

下面是我試圖在我的主類中調用的方式:

if (language.equals("Span")) {
    source.Spanish span = new source.Spanish();
    span.Spanish();
}
else {
   //More code.
}

我第一次提出問題,所以如果格式不正確或者問題已經得到回答,我很抱歉,我查看了過去的一些問題,但到目前為止沒有運氣。 謝謝 :)


編輯

package source;

import java.util.Scanner;
import java.lang.String;

public class CashRegister {
public static void main(String[] args) {

   String registerfloat;
   String input;
   String name;
   String anotherTransaction;
   String item2;
   String choice;
   String language = "";
   double balance;
   double cost;
   double change = 0;
   double cash = 0;
   double amountRequired = 0;
   double totalAmount = 0;

   Scanner in = new Scanner(System.in);

   System.out.println("Hello! Welcome to the Cash Register.\n");

   while (true) {
       if (language.equals("Eng"))break;
       if (language.equals("Span"))break;

       else {
           System.out.println("Which language would you like to use? English (Eng) or Spanish (Span)?:");
           language = in.nextLine();
       }
   }

   if(language.equals("Span")) {
       source.Spanish span = new source.Spanish();
       span.Spanish();
   }
   else {

       System.out.print("Please enter cash register's float: $");
       registerfloat = in.nextLine();
       balance = Double.parseDouble(registerfloat);


       boolean loop = true;
       while (loop == true) {
           System.out.println("Do you wish to continue this transaction?: (Yes/No)");
           choice = in.nextLine();
           loop = false;
           switch (choice) {
               case "Yes":

                   System.out.print("Please enter the item's name:\n");
                   input = in.nextLine();
                   name = input;

                   System.out.print("Please enter the item's cost:");
                   input = in.nextLine();
                   cost = Double.parseDouble(input);


                   System.out.println("Do you wish to add another item?: Yes/No");
                   item2 = in.nextLine();

                   while (true) {
                       if (item2.equals("No"))
                           break;
                       else {
                           System.out.print("Please enter the item's name:\n");
                           input = in.nextLine();
                           name = input;

                           System.out.print("Please enter the item's cost:");
                           input = in.nextLine();
                           cost = Double.parseDouble(input);

                           System.out.println("Do you wish to add another item?: Yes/No");
                           item2 = in.nextLine();

                       }
                   }

                   Transaction trans = new Transaction(name, cost);

                   amountRequired = amountRequired + trans.getCost();
                   totalAmount = totalAmount + trans.getCost();

                   System.out.print("Please enter the cash amount tendered: $");
                   input = in.nextLine();
                   cash = cash + Double.parseDouble(input);
                   amountRequired = amountRequired - cash;

                   balance = balance + cash;
                   change = cash - totalAmount;

                   System.out.println("Amount of change required = " + change);
                   loop = true;
                   break;
               case "No":
                   balance = balance - change;
                   System.out.print("Balance of the Cash Register: $" + balance + "\n");

                   System.out.println("\nThank you for using the Cash Register!");

                   System.exit(0);
               default:
                   loop = true;
                   System.out.println("Wrong input, try again!");
                   break;
           }
       }
   }

} }

以上是我來自 CashRegister 的完整代碼。 “西班牙語”具有完全相同的代碼,除了打印語句是西班牙語而不是英語。 另外,對不起,如果它很難閱讀或那里有不必要的東西,它是一個小組作業,在早期階段所以有點混亂。 干杯

更新 2

package source;

import java.util.Scanner;

public class RunClass {
public static void main(String[] args) {

    String registerfloat;
    String language = " ";
    double balance;

    Scanner in = new Scanner(System.in);

    System.out.println("Hello! Welcome to the Cash Register.\n");

    System.out.print("Please enter cash register's float: $");
    registerfloat = in.nextLine();
    balance = Double.parseDouble(registerfloat);

    while (true) {
        if (language.equals("Eng")) break;
        if (language.equals("Span")) break;

        else {
            System.out.println("Which language would you like to use? English (Eng) or Spanish (Span)?:");
            language = in.nextLine();
        }
    }

    if (language.equals("Eng")) {
        source.CashRegister.CashRegister();
    }
    else {
        // trying to enter Spanish.register here but it does not even show as its not on the current branch.
    }

}

}

在你的Spanish課上,你有

public class Spanish {
    public Spanish() {}
}

但是public Spanish()不是一個普通的方法,它是一個構造函數,只能用你已經做過的關鍵字new來調用。

if (language.equals("Span")) {
    Spanish span = new Spanish();
    span.Spanish();
}

(我刪除了包名,因為它不需要)所以你需要在你的Spanish課中使用另一種方法來完成實際工作。

但是,主要問題是,除了您復制了所有代碼這一事實之外,您正在嘗試在CashRegister的 main() 方法中執行所有CashRegister

首先,我會創建一個簡單的起始類,將其稱為Starter ,詢問語言問題,然后讓CashRegisterSpanish類處理主要功能。

class Starter {
    public static void main(String[] args) {
        //Ask question about language as before

        if (language.equals("Span")) {
            Spanish.register();
        } else {
            CashRegister.register();
        }
    }
}

然后你在CashRegisterSpanish中實現了一個register方法,其中包含else之后的代碼,請注意我將方法CashRegister static

public class CashRegister {
    public static void register() {
        System.out.print("Please enter cash register's float: $");
        registerfloat = in.nextLine();
        balance = Double.parseDouble(registerfloat);
        //... rest of code
    }
}

這應該會讓你開始,但還有許多可以做的進一步改進。


如果您不想擁有靜態方法,則需要按如下方式修改Starter類,但我認為靜態方法更有意義。

 if (language.equals("Span")) {
     Spanish spanish = new Spanish();
     spanish.register();
 } else {
     CashRegister cashRegister = new CashRegister();
     cashRegister.register();
 }

暫無
暫無

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

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