2016-12-23 6 views
-3

私のプログラムは実行されますが、論理的な誤りがあり、見つけられません。私は名前とすべてのものを入力しますが、私は旅を印刷することを選択したときに出力し唯一の電話番号と、ここでプログラムは何も印刷しません(オブジェクトとクラス)

import java.util.*; 
class Trip{ 

    private static String customerName; 
    private static String mobileNo; 
    private static String reservationCode; 
    public static int totalReservations=0; 
    public static Scanner input=new Scanner (System.in); 



    public Trip(){//The constructer 
     customerName = " "; 
     mobileNo = " "; 

    } 

    public Trip(String Name, String MobileNo) { 
        customerName=Name; 
        mobileNo=MobileNo; 

      totalReservations++; //increase the total reservations 
    } 

    public void setcustomerName(String Name){ 

     customerName = Name; 
    } 

    public void setmobileNo(String MobileNo){ 

     mobileNo = MobileNo; 
    } 


//Getters 

    public String getcustomerName() { 
     return customerName; 
    } 

    public String getmobileNo() { 
     return mobileNo; 
    } 

    public String getreservationCode() { 
     return reservationCode; 
    } 


    public static void generateReservationCode(){ 

    } 

    public static void printTripInfo(){ 
    System.out.println("Customer Name:"+customerName); 
    System.out.println("Phone Number:"+mobileNo); 



    } 
}//end class trip 


    public class CabCompany{ 
    private static int reservations_size=20; 
    private static Trip[] trip; 
    Trip newTrip; 
    public int totalNumber=0; 
    public static int user; 
    public static Scanner input=new Scanner (System.in); 

    public static void main(String[]args){//MAIN 
     trip=new Trip[reservations_size]; 

     do{ 

     System.out.println("1. Add a new trip\n2. Find a trip by reservation code\n3. List all trips\n"); 
     user=input.nextInt(); 

     if (user == 1) { 

      System.out.println("Name:"); 
      String Name = input.nextLine(); 
      input.nextLine(); 

      System.out.println("MobileNo:"); 
      String MobileNo = input.next(); 



      CabCompany Y = new CabCompany(); 
      boolean flag; 
      flag = Y.addTrip(Name,MobileNo); 
      if(flag == true) { 
       System.out.println("the trip has been added succssfully"); 

      } else if (flag == false){ 
       System.out.println("hasn't been added"); 
      } 
     } 

     if(user == 2) { 
      printAll(); 

     } 

     if(user == 3){ 
     System.out.println("The total Reservations is:"+Trip.totalReservations); 
     } 

     } while (user != 7);//BREAK 
     } 


    public boolean addTrip(String customerName,String mobileNo){ 

      boolean flag = true; 

     if ((mobileNo.length() == 10)) {  
     newTrip=new Trip(customerName, mobileNo); 
     int i = Trip.totalReservations - 1; 
     newTrip.generateReservationCode(); 
     trip[i] = newTrip; 

      flag = true; 




} else { 
      flag = false; 

     } 

     return flag; 
    }  


    public static void printAll() { 

     for(int t=0; t<Trip.totalReservations; t++){ 
      trip[t].printTripInfo();  

     } 
    } 

} 
+1

ヒント:私たちがあなたのために時間を費やすことを望みます**。だからあなたは、あなたのコードをすべて適切にフォーマット/インデントする時間を費やしてください。そして、コード品質に関する副作用:すべての種類のブロックの周りに{中括弧}を使用してください。そして反復して、elsesで休憩をして...ちょっと醜い。あなたは "クリーンコード"について少し読んでみたいです。あなたのコードはそれから利益を得ることができます... – GhostCat

+0

良いアドバイス、私はあなたに感謝します – Dipie

+0

それはプログラミングの問題についての質問ではない、それはプログラミングの問題についての質問です( "私は何をやっているのかわからない、どのようにプログラムをJavaで? ")。どうか、Javaの仕組みを学んでください。これは、Javaでプログラミングするための本やチュートリアルを読んでください。 SOからプログラムする方法を習得しようと時間を無駄にしないでください。 – zubergu

答えて

0

[OK]を、いくつかの空の名前の印刷を続けるので、私は彼らが保存されていないと思います。あなたの質問に答えるために、私はあなたが最初の行に、あなたは印刷することを、新しい空の旅(RR)を作成し、ここでの方法

public static void printTripInfo(){ 
    Trip rr=new Trip(); 
    CabCompany K=new CabCompany(); 
    for(int y=0;y<2;y++) 
    System.out.println("Customer Name:"+rr.getcustomerName()); 
    System.out.println("Phone Number:"+rr.getmobileNo()); 
} 

について話していると思います。このメソッドは次のようになります。

public static void printTripInfo(){ 
     System.out.println("Customer Name:"+getcustomerName()); 
     System.out.println("Phone Number:"+getmobileNo()); 
    } 

また、あなたがこのために使用できる方法で構築された、のtoString()と呼ばれるがあります。その他の考慮事項:変数名は、資本で始めるべきではないと(TYY、Yは、...、良い名前がありません)を意味している必要があり、あなたの最初の建設業者はこのように取り外して交換することができます。

class Trip{ 
private String customerName=""; 
private String mobileNo=""; 
private String day=""; 
private String date=""; 
private String time=""; 
... 
... 

をしかし、 、あなたのコード内の他のいくつかの問題がある、私はあなたがJavaのDEVについて少し詳細を読むか、チュートリアルに従ってくださいお勧めします。printTripInfo()メソッドで

+0

ええ、私は吸うんだけど、私はちょうど初心者です。これは大学でのプロジェクトなのでコンストラクタを削除できません。あなたはまだ言いますが、私はここに新しいコードを貼り付けて、これについて私に手伝ってくれてありがとう! – Dipie

+0

あなたはどういう意味ですか?「これは大学のプロジェクトなので、コンストラクタを削除できません」 –

+0

よく、彼らは私たちに説明書を書いてくれました。それは、2つのコンストラクタを作成しなければならないと言います。値を初期化するためのコンストラクタと、ユーザから値を取得するコンストラクタです。 – Dipie

0

)は、新しいトリップオブジェクト、 意志を作成しています常に空である: -

public static void printTripInfo(){ 
//Creating a new Trip object, which is empty  
Trip rr=new Trip(); 

//Printing the values from above object, which will be blank 
    System.out.println("Customer Name:"+rr.getcustomerName()); 
    System.out.println("Phone Number:"+rr.getmobileNo()); 

} 
+0

私はそれをしましたが、同じ問題を抱えています。ここで新しいコードを投稿してください – Dipie

関連する問題