2017-10-29 1 views
-1

Ich werde ein Programm erstellen, die Benutzer fragen, wie viele Fahrzeuge sie in der Garage speichern möchten, und lassen Sie den Benutzer die Informationen des Fahrzeugs und speichern in Array, hier ist der Code :Java-Methode und Konstruktor kann nicht angewendet werden

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

Wenn ich es kompilieren, ich in dieser Zeile einen Fehler bekam:

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

ich weiß wirklich nicht, wie Getter/Setter arbeiten, ich bin neu in Java Programming Language, tat Ich habe etwas falsch geschrieben?

Antwort

0
  1. Sie rufen den Konstruktor ohne Parameter, um zu tun, dass Sie es überlasten müssen, damit anderen Konstruktor deklarieren, die keine Argumente hat.

  2. Die Idee von Setter und Getter oder Einkapselung im Allgemeinen besteht darin, einen direkten Zugriff auf die Variablen selbst zu verhindern und ihre Werte mit einer Funktion zu ändern oder abzurufen. Ihr Setter muss ein Argument nehmen und den gewünschten Wert auf setzen, und der Getter gibt den Wert zurück.

    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

Danke, was nur ich brauchte, aber tut die Getter wirklich notwendig? Ich habe versucht, die void setters in private zu verwandeln, und stellte überhaupt keine getters her, und es funktioniert auch. –

+0

Die Idee ist, die Setter und Getter von außerhalb der Klasse zugänglich zu machen und die Mitglieder selbst privat. In Ihrem Fall sind die Mitglieder der Veh-Klasse nun von main aus erreichbar, da main ebenfalls Mitglied dieser Klasse ist und daher auf alle ihre Mitglieder und Methoden zugreifen kann. –

+0

Also, wenn ich nur 1 Java-Datei habe, und beide der Klasse in der Hauptklasse sind, funktioniert nur die Verwendung von Setter mit privaten Klasse? –

Verwandte Themen