Java 如何使用对象作为输入?

Java 如何使用对象作为输入?,java,object,constructor,Java,Object,Constructor,问题是- 定义类别Passenger和TrainCoach,并从String[]创建TrainCoach对象。定义一个类别Passenger,其字段名称(String)、年龄(int)、性别(char:M/F)、重量(int) 定义一个类别TrainCoach,该类别包含Passenger[]Passentials字段 您已获得一个String[]作为输入。将String[]作为输入,创建TrainCoach对象 public int numberofpatients():返回车厢内的乘客人数

问题是- 定义类别Passenger和TrainCoach,并从
String[]
创建TrainCoach对象。定义一个类别
Passenger
,其字段名称(
String
)、年龄(
int
)、性别(
char
:M/F)、重量(
int
) 定义一个类别
TrainCoach
,该类别包含
Passenger[]
Passentials字段 您已获得一个
String[]
作为输入。将
String[]
作为输入,创建
TrainCoach
对象

  • public int numberofpatients()
    :返回车厢内的乘客人数
  • public int numberOfChildren()
    :返回coach中的子项数。16岁以下的任何人都将被视为儿童
  • public int totalWeight()
    :返回车厢内所有乘客的总重量
我无法编写numberOfChildren()和totalweight()的逻辑。以下是我尝试过的。请解释我做错了什么

package Passenger;

 public class Passenger {
    String name;
    int age;
    char gender;
    int weight;  
    public Passenger(){}
        public Passenger(String data){
                String[] s=data.split(":");
                this.name=s[0];
                this.age=Integer.parseInt(s[1]);
                this.gender=s[2].charAt(0);
                this.weight=Integer.parseInt(s[3]);
        }
        public Passenger[] makePassenger(String[] input){
            Passenger[] passengers=new Passenger[input.length];
            for(int i=0;i<input.length;i++){
                passengers[i]=new Passenger(input[i]);
            }
            return passengers;
        }
}

package Passenger;

public class TrainCoach {
    Passenger[] passengers;
    public TrainCoach(){}
    public TrainCoach(Passenger[] passengers){
        this.passengers=passengers;
    }


    public static class PassengerTest{

        public static void main(String[] args){
            String[] str={"Amit Sharma:24:M:72","Rahul:12:M:55"};
            Passenger pass=new Passenger();
            Passenger[] passenger=pass.makePassenger(str);
            TrainCoach traincoach=new TrainCoach(passenger);
            int c=traincoach.numberOfPassengers();
            int d=traincoach.numberOfChildren();
            int b=traincoach.totalWeight();
            System.out.print(c+","+d+","+b);
        }
    }
    public int numberOfPassengers(){
        return this.passengers.length;
    }
    public int numberOfChildren(){
        int count=0;
        for(int i=0;i<passengers.length;i=i+4){
            if(i<16){
            count++;
            }
        }
        return count;
    }
    public int totalWeight(){
        int sum=0;
        for(int i=0;i<passengers.length;i=i+2){
            sum+=i;
        }
        return sum;
    }


}
包裹旅客;
公务舱乘客{
字符串名;
智力年龄;
性别;
整数权重;
公共乘客(){}
公共乘客(字符串数据){
字符串[]s=data.split(“:”);
this.name=s[0];
this.age=Integer.parseInt(s[1]);
this.gender=s[2].charAt(0);
this.weight=Integer.parseInt(s[3]);
}
公共乘客[]生成乘客(字符串[]输入){
乘客[]乘客=新乘客[输入.长度];

对于(int i=0;i您在进行计算时只处理循环计数器。您需要查看
Passenger
对象。以下是如何修复
totalWeight()
,您可以将其用作如何修复
numberOfChildren()

您只需执行以下操作:

Passenger[] passengers = Passenger.makePassenger(str);
public int numberOfChildren(){
整数计数=0;

对于(int i=0;i在您的
numberOfChildren()
中,您为什么要按
4
增加
i
?在
totalWeight()
中,您为什么要按
2
增加
i
?numberofpatients:您要报告的是阵列中实际有多少乘客,而不是阵列长度(最大乘客数)。我增加了2和4,因为这个位置反复出现年龄和体重。非常感谢您的帮助。欢迎。但我建议您阅读所有评论和答案。
Passenger pass=new Passenger();
Passenger[] passenger=pass.makePassenger(str);
Passenger[] passengers = Passenger.makePassenger(str);
public int numberOfChildren(){
    int count=0;
    for(int i=0;i<passengers.length;i++){
        if(passengers[i].age < 16){
            count++;
        }
    }
    return count;
}
public int totalWeight(){
    int sum=0;
    for(int i=0;i<passengers.length;i++){
        sum+=passengers[i].weight;
    }
    return sum;
}