Java 使对象变量在另一个类中私有

Java 使对象变量在另一个类中私有,java,Java,我已经编写了此预期输出的代码: 样本输入: 输入乘客姓名: 普里亚 输入genderM或F/m或F: F 输入年龄: 61 输入票号: 140 输入票价: 500.0 样本输出1: 车票号码:143 乘客姓名:Priya 票价:500.0 总数:375.0 我必须根据我编写函数的年龄和性别更改总金额值 我的代码: Person.java public class Person { private String name; private char gender; priv

我已经编写了此预期输出的代码:

样本输入:

输入乘客姓名: 普里亚

输入genderM或F/m或F: F

输入年龄: 61

输入票号: 140

输入票价: 500.0

样本输出1:

车票号码:143

乘客姓名:Priya

票价:500.0

总数:375.0

我必须根据我编写函数的年龄和性别更改总金额值

我的代码: Person.java

public class Person {
    private String name;
    private char gender;
    private int age;
    public void setName(String name ){
        this.name = name;
    }
    public void setGender(char gender){
        this.gender = gender ;
    }
    public void setAge(int age ){
        this.age = age;
    }
    public String getName(){
        return this.name;
    }
    public char getGender(){
        return this.gender;
    }
    public int getAge(){
        return this.age;
    }
}
java

public class BusTicket {
    private int ticketNo;
    private float ticketPrice;
    private float totalAmount;
    Person person = new Person();
    int age = person.getAge();
    char g = person.getGender();
    public void setTicketNo(int ticketNo){
        this.ticketNo = ticketNo;
    }
    public void setTicketPrice(float ticketPrice){
        this.ticketPrice = ticketPrice;
    }
    public void setTotalAmount(float totalAmount){
        this.totalAmount = totalAmount;
    }
    public void calculateTotal()
    {  
        if(age<16)
        {
            totalAmount = ticketPrice/2;
            setTotalAmount(totalAmount);
        }
            else if(age>=60)
        {
            totalAmount = 3*(ticketPrice/4);
            setTotalAmount(totalAmount);
        }
        else if(g == 'f'|| g== 'F')
        {
            totalAmount = 9*(ticketPrice/10);
            setTotalAmount(totalAmount);
        }
        else{
            setTotalAmount(ticketPrice);
        }
    }
    public int getTicketNo(){
        return this.ticketNo;
    }
    public float getTicketPrice(){
        return this.ticketPrice;
    }
    public float getTotalAmount(){
        return this.totalAmount;
    } 
}
但是我的TotalAmount值总是为0.0,它没有得到更新。 有些测试用例失败,请帮助解决:

失败1- 个人访问说明符/修饰符不正确-应为[私人]

失败2- 检查方法setPerson的signatureReturntype/Argument/AccessSpecifier/MethodName是否正确

失败3- 检查getPerson方法的signatureReturntype/Argument/AccessSpecifier/MethodName是否正确

请帮忙

谢谢

您需要致电calculateTotal更新totalAmount。否则,它将始终为0.0


在您的BusTicket类中,一个新的Person对象被指定给Person属性,然后您试图从新创建的Person对象中获取年龄和性别详细信息,但此时Person的年龄和性别尚未填充

  Person person = new Person();
  int age = person.getAge();  
这就是为什么你会得到0。理想情况下,应该将使用输入详细信息创建的person对象传递给BusTicket类,并用该person填充BusTicket的person属性


试试看:

在您的BusTicket类中,为Person对象创建一个getter和setter,并从main方法设置值。

在打印总量之前,您需要调用bt.calculateTotal。正如@Héctor已经提到的,您必须调用calculateTotal方法,只是一个建议,这个函数应该在不同的类中,比如TicketGenerator,公共汽车票是一个真实的对象,它不知道如何计算总数value@GhostCatsaysReinstateMonica谢谢,我得到了总数,但是你能帮我解决失败的测试用例吗
...
System.out.println("Price of a ticket : "+bt.getTicketPrice());
bt.calculateTotal(); // Add this line
System.out.println("Total Amount : "+bt.getTotalAmount());
  Person person = new Person();
  int age = person.getAge();