2017-10-29 8 views
-1

ガレージに何個の車両を格納したいかを尋ねるプログラムを作成し、ユーザーが車両の情報を配列して格納させるようにします。 :私はそれをコンパイルするとjavaメソッドとコンストラクタを適用することができません

public class Main { 
    static class veh { 
     int roda; 
     String warna; 
     String merk; 

     public veh(int roda, String warna, String merk){ 
      this.roda = roda; 
      this.warna = warna; 
      this.merk = merk; 
     } 
     private void setRoda(){ 
     } 
     private void setWarna(){ 
     } 
     private void setMerk(){ 
     } 
    } 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     System.out.print("Pemilik Garasi\t: "); 
     String nama = in.nextLine(); 
     System.out.print("NIM\t\t\t\t: "); 
     String nim = in.next(); 
     System.out.print("Kelas\t\t\t: "); 
     String kls = in.next(); 
     System.out.print("Masukkan Luas Garasi\t:"); 
     int luas = in.nextInt(); 
     veh[] data = new veh[luas]; 
     System.out.println("============================"); 

     for (int i = 0; i < luas; i++) { 
      veh vehicle = new veh(); 
      System.out.println("Masukkan Data Kendaraan Ke " + (i + 1)); 
      System.out.print("Jumlah Roda\t: "); 
      vehicle.setRoda(in.nextInt()); 
      System.out.print("Warna\t\t: "); 
      vehicle.setWarna(in.next()); 
      System.out.print("Merk\t\t: "); 
      vehicle.setMerk(in.next()); 
      data[i] = vehicle; 
     } 

     System.out.println("====== GARASI PRIBADI ======"); 
     System.out.println("Milik \t: " + nama); 
     System.out.println("NIM \t: " + nim); 
     System.out.println("Kelas \t: " + kls); 
     System.out.println("============================"); 
     for (int i = 0; i < luas; i++) { 
      System.out.println("Kendaraan Ke " + (i + 1)); 
      System.out.println("Jumlah Roda\t : " + data[i].roda); 
      System.out.println("Warna\t\t : " + data[i].warna); 
      System.out.println("Merk\t\t : " + data[i].merk); 
      System.out.println("--------------------------"); 
     } 
    } 
} 

は、私はこの行でエラーを得た:私は本当にゲッター/セッターがどのように動作するか分からない

veh vehicle = new veh(); 
vehicle.setRoda(in.nextInt()); 
vehicle.setWarna(in.next()); 
vehicle.setMerk(in.next()); 

、私は、Javaプログラミング言語の新なかったですよ私は何か間違って書いた?

答えて

0
  1. あなたは引数を取らない別のコンストラクタを宣言し、それゆえ、それをオーバーロードする必要があります ことを行うためには、パラメータなしでコンストラクタを呼び出しています。

  2. 一般に、セッターとゲッターまたはカプセル化の考え方は、変数自体に直接アクセスするのを防ぎ、関数を使用して値を変更または取得することです。あなたのセッターは引数をとり、あなたが意図する値を に設定し、ゲッターがその値を返す必要があります。

    public class Main { 
        static class veh { 
         private int roda; 
         private String warna; 
         private String merk; 
    
         public veh(){} 
    
         public veh(int roda, String warna, String merk){ 
          this.roda = roda; 
          this.warna = warna; 
          this.merk = merk; 
         } 
         public void setRoda(int newRoda){ 
          roda = newRoda; 
         } 
    
         public void setWarna(String newWarna){ 
          warna = newWarna; 
         } 
         public void setMerk(String newMerk){ 
          merk = newMerk; 
         } 
         public void getRoda(){ 
          return roda; 
         } 
    
         public void getWarna(){ 
          retun warna; 
         } 
         public void getMerk(){ 
          return merk; 
         } 
    
        } 
    
+0

おかげで、私は必要ですが、本当に必要なゲッターを行うだけで何?私はvoid settersをprivateに変更しようとしましたが、getterをまったく入れませんでした。 –

+0

考え方は、セッターとゲッターをクラスの外からアクセス可能にし、メンバー自身を非公開にすることです。今度は、mainクラスがこのクラスのメンバーであるため、Vehクラスのメンバーはmainからアクセスできます。したがって、メンバーとメソッドのすべてにアクセスできます。 –

+0

私は1つのJavaファイルを持って、両方のクラスは、プライベートクラスのセッターだけを使用して動作するメインクラスにある場合は? –

関連する問題