2017-10-29 84 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()); 

我真的不知道getter/setter方法是如何工作的,我是用Java編程語言新,做我寫錯了什麼?

回答

0
  1. 要調用不帶參數的構造中,爲了做到這一點 你需要重載它,因此,聲明另一個構造函數沒有參數。

  2. setter和getters或封裝的概念通常是防止直接訪問變量本身,並使用函數修改或獲取它們的值。你的二傳手需要一個參數並設置你想要的值 並且吸氣機返回值。

    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 setter改爲private,並且根本沒有放置getter,並且它也可以工作。 –

+0

這個想法是爲了讓外界和會員本身都可以訪問setter和getters。現在在你的情況下,veh類的成員可以從main訪問,因爲main也是這個類的成員,因此可以訪問它的所有成員和方法。 –

+0

因此,如果我只有一個java文件,並且這兩個類都在主類中,那麼僅使用私有類的setter將會起作用? –