2017-10-29 121 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将会起作用? –