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()); 

, 한 내가 쓴 것이 잘못 됐어?

답변

0
  1. 당신은 당신이 인수를 취하지 않는 다른 생성자를 선언, 따라서 그것을 오버로드해야합니다 그렇게하기 위해, 매개 변수없이 생성자를 호출한다.

  2. 일반적으로 setter 및 getter 또는 캡슐화에 대한 개념은 변수 자체에 대한 직접 액세스를 방지하고 함수를 사용하여 값을 수정하거나 가져 오는 것입니다. 당신의 세터는 인수를 취하고 당신이 의도 한 값을 으로 설정하고 getter가 값을 반환해야합니다.

    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를 개인용으로 변경하려고 시도했지만 getter를 전혀 넣지 않았으며 작동합니다. –

+0

아이디어는 클래스 밖에서 setter와 getter에 액세스 할 수있게하고 멤버 자체는 비공개로 설정하는 것입니다. 이제는 주 클래스가이 클래스의 멤버이기 때문에 주 클래스에서 Veh 클래스의 멤버에게 액세스 할 수 있으므로 모든 멤버와 메서드에 액세스 할 수 있습니다. –

+0

그래서 만약 내가 오직 1 자바 파일을 가지고, 클래스의 두 클래스가 작동합니까 전용 클래스와 함께 setters를 사용하여 주입니까? –