Я получаю значение «0» всякий раз, когда вызываю какой-либо метод из основного класса. Почему это? - PullRequest
0 голосов
/ 07 мая 2020

IM получает значение «0» на выходе всякий раз, когда я вызываю метод getAge или вычисляю сумму из основного метода. Я создал еще один метод BusTicket в основном классе, чтобы получить подробную информацию. Вызов метода calculateTotal из класса BusTicket в основном методе получает нулевое значение в методе. Теперь вызов метода some в методе BusTicket работает нормально и дает необходимое output ..

// это основной класс

Основной класс

    public class basicjava() {

       public static void main(String args[]) {
            BusTicket bus=new BusTicket();
            Person person=new Person();
            getTicketDetails().calculateTotal();
            System.out.println("Age "+person.getAge());
            System.out.println("Total Amount : "+bus.getTotalAmount());
         }
       public static BusTicket getTicketDetails(){
             Person person=new Person();
             BusTicket bus=new BusTicket();
             bus.setPerson(person);
             Scanner scan=new Scanner(System.in);
             System.out.println("Enter the passenger name:");
             person.setName(scan.nextLine());
             System.out.println("Enter the gender(M or F / m or f)");
             person.setGender(scan.next().charAt(0));
             System.out.println("Enter the age:");
             person.setAge(scan.nextInt());
             System.out.println("Enter the ticket no:");
             bus.setTicketNo(scan.nextInt());
             System.out.println("Enter the ticket price");
             bus.setTicketPrice(scan.nextFloat());
             bus.setPerson(person);
             System.out.println("Ticket no:"+bus.getTicketNo());
             System.out.println("Passenger Name:"+person.getName());
             System.out.println("Price of a ticket:"+bus.getTicketPrice());
             bus.calculateTotal();
             System.out.println("Total Amount : "+bus.getTotalAmount());
             return bus;
         }
     }
//this is the second class
#Person class

     
       public class Person {
         private String name;
         private char gender;
         private int age;
    
         public char getGender() {
            return gender;
         }
    
         public void setGender(char gender) {
             this.gender = gender;
         }
         public String getName(){
             return name;
         }
         public void setName(String name){
             this.name=name;
         }
         public int getAge(){
             return age;
         }
         public void setAge(int age){
             this.age=age;
         }
     }
// this is the third class
#BusTicket class
        public class BusTicket {
             private int ticketNo;
             private float ticketPrice;
             private float totalAmount;
             private Person person;
             public int getTicketNo(){
                 return ticketNo;
             }
             public void setTicketNo(int ticketNo){
                 this.ticketNo=ticketNo;
             }
         
             public float getTicketPrice() {
                 return ticketPrice;
             }
        
             public void setTicketPrice(float ticketPrice) {
                 this.ticketPrice = ticketPrice;
             }
        
             public float getTotalAmount() {
                 return totalAmount;
             }
        
             public void setTotalAmount(float totalAmount) {
                this.totalAmount = totalAmount;
             }
        
             public Person getPerson() {
                 return person;
             }
        
             public void setPerson(Person person) {
                 this.person = person;
             }
             public void calculateTotal() {
                 if (person.getAge() < 16) {
                     totalAmount = (float) 0.5 * ticketPrice;
                 } else if (person.getAge() >= 60) {
                     totalAmount = (float) 0.75 * ticketPrice;
                 } else if (person.getGender() == 'F'|| person.getGender()=='f') {
                     totalAmount = (float) 0.9*ticketPrice;
                 } else {
                     totalAmount = ticketPrice;
                 }
             }
        
        
         }

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Экземпляр person в вашем основном методе - это другой объект, чем тот, для которого вы вызываете setAge. В getTicketDetails вы создаете нового человека и устанавливаете возраст для этого экземпляра, но вы печатаете возраст человека, созданного в main.

0 голосов
/ 07 мая 2020

Вы каждый раз создаете новый BusTicket объект

BusTicket bus=new BusTicket();

Вместо этого вам нужно получить его из вашего метода getTicketDetails(). Затем вы можете получить доступ к объекту класса Person, который вы определили в getTicketDetails()

BusTicket bus= getTicketDetails();
Person person = bus.getPerson();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...