Попытка вызова метода в другом классе для использования в операторе IF - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь вызвать класс при выполнении оператора 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.
}

Я впервые задаю вопрос, поэтому мне жаль, если формат неправильный или если на вопрос уже был дан ответ, я посмотрел некоторые из прошлых вопросов, но пока не повезло. Спасибо:)


EDIT

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.
    }

}

}

1 Ответ

0 голосов
/ 02 ноября 2018

В вашем Spanish классе у вас есть

public class Spanish {
    public Spanish() {}
}

, но public Spanish() - это не обычный метод, это конструктор, который можно вызвать только с ключевым словом new, которое вы уже делаете.

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

(я удалил имя пакета, так как оно не нужно). Итак, вам нужен еще один метод в вашем классе Spanish, который выполняет реальную работу.

Основная проблема, несмотря на то, что вы продублировали весь код, состоит в том, что вы пытаетесь сделать все в методе main () CashRegister

Для начала я бы создал простой начальный класс, назовем его Starter, который задает вопрос о языке, а затем позволяет классу CashRegister или Spanish обрабатывать основные функции.

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

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

И затем вы реализуете метод register в CashRegister и Spanish, которые содержат код после else, обратите внимание, что я сделал метод 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();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...