2014-03-12 81 views
1
  • 定義具有的字段名稱(字符串),年齡(INT),性別類乘客(CHAR:M/F),重量(INT)如何從主類調用一個類?

  • 定義具有字段乘客一類TrainCoach []乘客

  • 定義類列車和它的功能。班級培訓有Vector教練。 給定的矢量作爲輸入,創建對象列車其中每個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); 
    } 
} 
+0

可你寫的錯誤味精?! – Scorpion

+0

請確切指出哪條線路發生故障併發生什麼錯誤? – merlin2011

+0

錯誤 - *無法找到或加載主要班級乘客* ...我無法將其與主班級鏈接。 –

回答

4

有SEV與您提供的代碼有關的問題。

  1. Passenger類沒有包語句,但其他類位於package Passenger。因此,引用Passenger的類實際上不應該編譯。也許你只是在將代碼複製/粘貼到stackoverflow時忘記了package語句?無論如何,要解決這個問題,請確保Passenger與其他類具有相同的包。

    通常情況下,您也可以通過在引用它的其他類中導入Passenger類來解決此問題,但在沒有包的情況下無法導入類,因此您需要該包語句。

  2. 這是非常令人困惑,你的一類和包具有相同的名稱。你至少應該命名以小寫「p」和類Passenger用大寫「P」的包裝passenger。這是普通的Java代碼標準。

  3. 我不太清楚你實際上試圖做的,但在我看來,你正試圖執行的客運班;像java Passenger。這會失敗,因爲Passenger類中沒有main方法。無論類,你正在使用爲切入點,該類需要一個main方法具有以下簽名:

    此外,請記住,當類得到一個包的名稱,則需要包括執行時,包的名稱;即類似於java passenger.Passenger

希望這可以幫助你一路上。

相關問題