[英]How can I call a class from main class?
定义一个具有以下字段名称的旅客:字段(字符串),年龄(整数),性别(字符:M / F),体重(整数)
定义一个类别为TrainCoach的字段,该字段具有Passenger [] passenger
定义类Train及其中的功能。 培训班有Vector教练。 给定一个Vector作为输入,创建对象Train,其中每个String []与上面作为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时忘记了package语句? 无论如何,要解决此问题,请确保Passenger
具有与其他舱位相同的包裹。
通常,您也可以通过在引用该类的其他类中导入Passenger
类来解决此问题,但是如果没有包,则无法导入该类,因此需要该package语句。
您对类和包使用相同的名称感到非常困惑。 你至少应该软件包命名为passenger
用小写“p”和类Passenger
用大写“P”。 这是正常的Java代码标准。
我不太确定您实际上要做什么,但是在我看来,您正在尝试执行Passenger类。 像java Passenger
类的东西。 由于乘客类中没有main
方法,因此这将失败。 无论您使用哪个类作为入口点,该类都需要一个具有以下签名的main
方法:
public static void main(String[] args)
另外,请记住,当类获得程序包名称时,在执行时将需要包括程序包名称。 即类似java passenger.Passenger
东西。
希望这对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.