Определить класс Пассажир с именами полей (String), age (int), gender (char: M/F), weight (int)
Определить класс TrainCoach, имеющий поля Пассажиры [] пассажиры
Определите класс Train и функции в нем. В классе Train есть полевые тренеры Vector. Учитывая векторный вход, создайте объект Train, где каждая строка [] аналогична той, которая была указана в качестве входного сигнала для TrainCoach выше.
У меня возникают проблемы с вызовом функций класса Train в основном классе? Как я могу назвать эти методы?
Класс пассажира:
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;
}
}
Класс TrainCoach:
package Passenger;
public class TrainCoach {
Passenger[] passengers;
static char gender;
public TrainCoach(){}
public TrainCoach(Passenger[] passengers){
this.passengers=passengers;
}
public TrainCoach(String[] data){
Passenger[] passengers=new Passenger[data.length];
for(int i=0;i<data.length;i++){
passengers[i]=new Passenger(data[i]);
}
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();
int a=traincoach.numberOf(gender);
System.out.print(c+","+d+","+b+","+a);
}
}
public int numberOfPassengers(){
return this.passengers.length;
}
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;
}
public int numberOf(char gender){
int count=0;
for(int i=0;i<passengers.length;i++){
if(passengers[i].gender=='M'){
count++;
}
else if(passengers[i].gender=='F'){
count++;
}
}
return count;
}
}
Класс поезда:
package Passenger;
import java.util.Vector;
public class Train{
Vector<TrainCoach>coaches;
public Train(){}
public Train(Vector<String[]> data){
for(int i=0;i<data.size();i++){
coaches.addElement(new TrainCoach(data.elementAt(i)));
}
this.coaches=coaches;
}
public int numberOfPassengers(){
int numOfPassengersInTrain = 0;
for(int i = 0; i < coaches.size(); i++){
numOfPassengersInTrain += this.coaches.elementAt(i).numberOfPassengers();
}
return(numOfPassengersInTrain);
}
}
Существует несколько проблем с кодом, который вы предоставили.
Класс Passenger
не имеет оператора пакета, но другие классы находятся в package Passenger
. Из-за этого классы, ссылающиеся на Пассажира, фактически не должны компилироваться. Возможно, вы просто забыли оператор пакета при копировании/вставке кода в stackoverflow? В любом случае, чтобы исправить это, убедитесь, что Passenger
имеет тот же пакет, что и другие классы.
Обычно вы также можете решить эту проблему, импортировав класс Passenger
в другие классы, ссылающиеся на него, но невозможно импортировать класс, когда он не имеет пакета, поэтому вам нужна эта инструкция пакета.
Очень сложно, что у вас одно и то же имя для класса и пакета. Вы должны хотя бы назвать passenger
пакета с нижним регистром "p" и классом " Passenger
с верхним регистром "P". Это обычный стандарт Java-кода.
Я не совсем уверен, что вы на самом деле пытаетесь сделать, но мне кажется, что вы пытаетесь выполнить класс Passenger; что-то вроде java Passenger
. Это не сработает, поскольку в классе Passenger нет main
метода. Какой класс вы используете в качестве точки входа, этот класс нуждается в main
методе со следующей подписью:
public static void main(String[] args)
Также помните, что когда класс получает имя пакета, вам нужно будет указать имя пакета при выполнении; т.е. что-то вроде java passenger.Passenger
. java passenger.Passenger
.
Надеюсь, это поможет вам на этом пути.