有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将参数传递给构造函数

我有一些糟糕的编码习惯,这些习惯是我从糟糕的代码中养成的,但是我正在努力解决这些问题。我的主要问题是试图通过构造函数传递初始参数,我已经有一年没有用Java编码了,所以让我知道所有的错误

public class AccountHolder {

     public static void main(String args[])
     {
        //Introduce scanner
           Scanner sc = new Scanner(System.in); //Used to take input from user
           System.out.println("Welcome to the bank program! Can you tell me your current balance?");

       input = sc.nextDouble();
       AccountHolder(input);
      }

        // Introduce private field members
        private static double annualInterestRate; //Constant to hold annual interest rate
        private static double fee; // Constant to hold the withdrawal fee
        private double balance; // variable to hold the balance
        private double rateUpdate; // variable to hold the value to update the rate
        private static double input; // variable to hold user input
        private double test; // variable to test whether or not user will drop below $100.

        // introduce a DecimalFormat object
        DecimalFormat twoPlace = new DecimalFormat("0.00"); // Used to keep values to 2 significant figures.

        // Introduce public methods

        public AccountHolder(double input) 
        {   
            balance = input;
        }

        public void deposit(double input)
        { 
            balance = balance + input;
            System.out.println("Your new balance is: $" + twoPlace.format(balance));
        }

        public void withdrawl(double input)
        {
            test = balance;
            balance = balance - input;

            if (balance < 100.0)
            {
                balance = balance + input;
                System.out.println("Your balance is not allowed to drop below $100.00. Please try again when you have more funds.");
            }

            if (test >= 500 && balance < 500)
            {
                balance = balance - fee;
                System.out.println("You have been charged an additional $50 for dropping below $500.00.");
            }

            System.out.println("Your new balance is: $" + twoPlace.format(balance));
        }



        public void monthlyInterest()
        {
            balance += balance * (annualInterestRate / 12.0);
        }

        public static void modifyMonthlyInterest(double rateUpdate)
        {
            annualInterestRate = rateUpdate;
            while (annualInterestRate <= 0 || annualInterestRate >= 1.0)
            {
                System.out.println("Error! Interest rates must be between 0 and 1. We need to keep our money!");
                annualInterestRate = sc.nextDouble();
            }

        }

        public String toString()
        {
            return String.format("$%.2f", balance);

        }



}

共 (2) 个答案

  1. # 1 楼答案

    这是您的构造函数:

    public AccountHolder(double input) {   
            balance = input;
     }
    

    您传递的参数如下所示:

    AccountHolder(input);
    

    您无法使用关键字new实际创建该类的新实例

    AccountHolder myHolder =  new  AccountHolder(input);
    
  2. # 2 楼答案

    而不是

    AccountHolder(input);
    

    你需要做什么

    new AccountHolder(input);
    

    当您缺少“new”时,它被解释为一个方法调用。使用“new”将其解释为对构造函数的调用

    PS:我想建议你们研究变量的范围。例如,您可以在“main”方法内部定义“input”变量,而不是静态类变量。这提高了代码的可读性