Java 检查未注册时出错

Java 检查未注册时出错,java,eclipse,class,Java,Eclipse,Class,我相信这有一个简单的答案,但是当我把我的余额设置为负数时,我希望系统打印一个错误,目前,它只是将负数打印到控制台,有人能帮我解释为什么会发生这种情况吗。感谢您的回复 package Assignment1; public class Customer { private String name; private String address; private int balance; public Customer(String nameParam, Stri

我相信这有一个简单的答案,但是当我把我的余额设置为负数时,我希望系统打印一个错误,目前,它只是将负数打印到控制台,有人能帮我解释为什么会发生这种情况吗。感谢您的回复

package Assignment1;

public class Customer
{
    private String name;
    private String address;
    private int balance;

    public Customer(String nameParam, String addressParam, int balanceParam)
    {   
        name = nameParam;  
        address = addressParam;
        balance = balanceParam;
    }

    public void setName(String nameParam)
    {
        name = nameParam;
    }

    public String getName()
    {
        return name;
    }

    public void setAddress(String addressParam)
    {
        address = addressParam;
    }

    public String getAddress()
    {
        return address;
    }

    //I want the system to print an error should the balanceParam be less than 0
    public void setBalance(int balanceParam)
    {
        if (balanceParam >= 0)
        {
            balance = balanceParam;
        }
        else
        {
            System.out.println("Error: Invalid balance");
        }

    }


    public int getBalance()
    {
        return balance;
    }



    public static void main(String[] args) 
    {

        Customer customer1 = new Customer("Tom", "High Street", 100);
        Customer customer2 = new Customer("Mary", "Low Street", 110);

            //The balance for customer3 is set to a negative number
        Customer customer3 = new Customer("John", "Middle Street", -10);

        System.out.print(customer1.getName() + "\t");
        System.out.print(customer1.getAddress()+ "\t");
        System.out.println(customer1.getBalance());

        System.out.print(customer2.getName()+ "\t");
        System.out.print(customer2.getAddress()+ "\t");
        System.out.println(customer2.getBalance());

        System.out.print(customer3.getName()+ "\t");
        System.out.print(customer3.getAddress()+ "\t");
        System.out.println(customer3.getBalance());

    }

}

请注意,检查发生在您的
setBalance()
方法中,但您从未调用此方法。特别是,构造函数直接设置
余额
字段,而无需进行类似的检查。解决此问题(同时减少重复)的一种方法是从构造函数调用
setBalance()
(和其他设置器)。

从不调用打印错误的方法
setBalance

要在构造
Customer
对象时立即打印错误,请将构造函数更改为对类字段使用setter方法

public Customer(String nameParam, String addressParam, int balanceParam)
{   
    setName(nameParam);  
    setAddress(addressParam);
    setBalance(balanceParam);
}
此外,您可能希望通过引发异常来阻止构造此类对象或在现有对象中设置负平衡:

public void setBalance(int balanceParam) {
    if (balanceParam < 0) {
        throw new IllegalArgumentException("Error: Invalid balance");
    }
    balance = balanceParam;
}
public void setBalance(int balanceParam){
if(平衡参数<0){
抛出新的IllegalArgumentException(“错误:无效余额”);
}
平衡=平衡参数;
}

谢谢,我现在知道问题出在哪里了,谢谢你的帮助