Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不知道如何创建使用其他类中的方法的菜单_Java_Oop_Methods_Menu - Fatal编程技术网

Java 不知道如何创建使用其他类中的方法的菜单

Java 不知道如何创建使用其他类中的方法的菜单,java,oop,methods,menu,Java,Oop,Methods,Menu,到目前为止,我已经创建了两个类,我将在下面展示 我对这两门课都进行了测试,它们似乎都很有效 我现在需要创建一个菜单,该菜单将使用我创建的两个类,允许用户输入信息并查找其帐户上的以下信息: 添加客户详细信息 向商业帐户存款 将电表读数记录到商业账户 显示业务帐户的当前余额 显示完整的帐户详细信息 更改业务帐户的折扣值 更改所有业务账户的单位成本 如何使用菜单系统 虽然我已经尽了最大的努力找到如何使用在线资源来做这件事,但我现在迷路了。到目前为止,每次我尝试创建一个菜单系统时,我都无法让它工作。如果

到目前为止,我已经创建了两个类,我将在下面展示

我对这两门课都进行了测试,它们似乎都很有效

我现在需要创建一个菜单,该菜单将使用我创建的两个类,允许用户输入信息并查找其帐户上的以下信息:

  • 添加客户详细信息
  • 向商业帐户存款
  • 将电表读数记录到商业账户
  • 显示业务帐户的当前余额
  • 显示完整的帐户详细信息
  • 更改业务帐户的折扣值
  • 更改所有业务账户的单位成本
  • 如何使用菜单系统
  • 虽然我已经尽了最大的努力找到如何使用在线资源来做这件事,但我现在迷路了。到目前为止,每次我尝试创建一个菜单系统时,我都无法让它工作。如果有人能帮助我掌握如何做这件事的基本知识,我将不胜感激

    谢谢:)



    还有一个扩展了它-

    public class BusinessAccount extends GasAccount
    {
    
        private double dblDiscount;
    
        public BusinessAccount (int intNewAccRefNo, String strNewName, String strNewAddress, double dblNewUnits, double dblNewDiscount)
        {
            super (intNewAccRefNo , strNewName , strNewAddress, dblNewUnits);
            dblDiscount = dblNewDiscount;
        }
    
        public void setNewDiscount(double dblNewDiscount)
        {
            dblDiscount = dblNewDiscount;
        }
    
        public double getDiscount()
        {
            return dblDiscount;
        }
    
        @Override
        public void recordUnits (double dblUnitsUsed)
        {
            double dblNewBalance;
            dblBalance = dblBalance + dblUnitsUsed * dblUnitsCosts;
            dblNewBalance = dblUnitsUsed * dblUnitsCosts * dblDiscount / 100;
            dblBalance = dblBalance - dblNewBalance;
        }
    

    下面是我尝试的菜单,直到第五个选项。我在从其他类中调用BuisMessageAccount.getMethod作为BuisMessageAccount的方法时犯了一个可怕的错误。我也很确定再次声明变量是完全错误的,因为它们与我的其他类没有链接

    如果有人能帮我解决这个问题,我将不胜感激

    import java.util.Scanner;
    
    public class Menu
    {
        public static void main(String [] args)
        {
    
            Scanner input = new Scanner(System.in);
    
            int Choice;
    
            {
                System.out.println("------------------------------");
                System.out.println ( "1. Add the customers details" ) ;
                System.out.println ( "2. Make a deposit to the business account" );
                System.out.println ( "3. Record a meter reading to the business account" ) ;
                System.out.println ( "4. Display current balance of the business account" ) ;
                System.out.println ( "5. Display full account details" ) ;
                System.out.println ( "6. Change the discount value for the business account" ) ;
                System.out.println ( "7. Change the cost per unit for all business accounts ");
                System.out.println ( "8. How to use the menu system ");
                System.out.println ( "Any other number will exit the program");
                System.out.println("------------------------------");
                System.out.println ( "\n\nEnter a number from 1 to 8" );
                Choice = input.nextInt();
    
                switch (Choice)
                {
                 case 1 :
                  int intNewAccRefNo;
                  String strNewName;
                  String strNewAddress;
                  Double dblNewUnits;
                  Double dblNewDiscount;
    
                  System.out.println("Please enter the account number?");
                  intNewAccRefNo  = input.nextInt();
    
                  System.out.println("Please enter the account name?");
                  input.nextLine();
                  strNewName = input.nextLine();
    
                  System.out.println("Please enter the account address?");
                  strNewAddress = input.nextLine();
    
                  System.out.println("Please enter the number of initial number of units used?");
                  dblNewUnits = input.nextDouble();
    
                  System.out.println("Please enter the discount?");
                  dblNewDiscount = input.nextDouble();
    
                 case 2:
    
                  double dblDeposit;
    
                  System.out.println("Please enter the amount you want to deposit?");
                  dblDeposit = input.nextDouble();
    
                  System.out.println ( "The current balance: " + BusinessAccount.getBalance() ) ;
    
                 case 3:
    
                  double dblUnits;
    
                  System.out.println("Enter the number of Units Used");
                  dblUnits = input.nextDouble();
                  BusinessAccount.recordUnits(dblUnits);
    
                 case 4:
    
                  System.out.println("\n Current Balance: £"+ BusinessAccount.getBalance());
    
                 case 5:
    
                   System.out.println("Account Reference Number: " + BusinessAccount.getAccRefNo());
                   System.out.println("Address: " + BusinessAccount.getAddress());
                   System.out.println("Name: " + BusinessAccount.getName());
                   System.out.println("Balance: " + BusinessAccount.getBalance());
                   System.out.println("Discount: " + BusinessAccount.getDiscount());
                   System.out.println("Units: " + BusinessAccount.getUnits());
    


    用户输入的内容与我调用的方法之间没有联系,不确定如何修复。

    通过使用
    BusinessAccount.someMethod()
    ,您试图在静态上下文中调用所述方法,但您的方法不是静态的。要调用您的方法,您需要使它们成为静态的,或者需要创建一个对象,然后可以调用它们,即:

    BusinessAccount ba= new BusinessAccount (4, "name", "address", 3.4, 43.4);
    ba.someMethodFromClass();
    
    在您的情况下,您不希望它们是静态的。阅读更多关于静态方法/变量的内容(见下文)

    一些可能有用的文档:

    要回答第二个问题,您需要有一个方法(在对象的类中,而不是main中),该方法可以为变量赋值。即:

    public void setAddress (String address)
    {
        strAddress=address;
    }
    
    然后,将从main读入的地址传递到函数中。通过这样做,您将初始化/分配来自用户的值到存储在类中的值,即:

    System.out.println("Please enter the account address?"); 
    String temp = input.nextLine(); 
    ba.setAddress(temp);
    System.out.println("Address:" + ba.getAddress());
    
    或者更好

    System.out.println("Please enter the account address?"); 
    ba.setAddress(input.nextLine());
    System.out.println("Address:" + ba.getAddress());
    

    与SteveP所说的不同,最好将其他类的实例作为实例变量存储在菜单类中

    此外,如果您使用的是GUI界面,此JMenu类API可能会派上用场:


    还要查找JMenuBar,JMenuItem

    的可能重复项。另外,您的构造函数/类有不同的名称…Business和BuisnessOk,因此我创建了对象,现在可以从其他类调用方法。然而,我现在遇到了一个不同的问题,我已经在我的帖子底部添加了这个问题。我不太确定你所说的“然后,你将从main读入的地址传递到你的函数中”是什么意思。你能给我举个例子吗?编辑。不想让人感到痛苦,但当人们回答问题并给出正确/完整的答案时,一个(理想情况下)应该投票(你可以投票给任何数量的问题/答案)你认为好的答案/接受你认为最能回答你问题的答案。如果你问了一个问题,然后又有其他问题,你通常应该发表另一篇文章。人们把他们的时间花在回复帖子上,作为回报,他们从投票/接受答案等方面获得了声誉。谢谢。啊,对不起,我不知道你可以投票给每个答案
    System.out.println("Please enter the account address?"); 
    String temp = input.nextLine(); 
    ba.setAddress(temp);
    System.out.println("Address:" + ba.getAddress());
    
    System.out.println("Please enter the account address?"); 
    ba.setAddress(input.nextLine());
    System.out.println("Address:" + ba.getAddress());