Vererbung

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
So hallo an alle, diesmal komme ich mit nem blöden problem zu euch es ist etwas abstarkt und nicht so leicht zu verstehen aber ich hoffe ihr könnt mir weiterhelfen....

Und zwar hat uns unserer lehrer gesagt wir sollen verschidene klassen schreiben . . . so gesagt getahen ioch habe 5 klassen die sich wie folg auf bauen :

medien (Hauptklasse)

cd(unterklasse von medien) filme (unterklasse von medien)

DVD(unterklasse von filme) VHS(unterklasse von film)


so das ist bis JETZT noch kein problem ich habe die jetzt alle schön geschrieben mit vererbung jeder der klassen hat jetzt auch verschiedene construktoren . . . und damit fängt mein problem an und zwar habe ich nun ein programm geschrieben mit hilfe von arrays. jetzt brauche ich ja nur die DVD, CD, und VHS klasse zu erstellen da die anderen ja dann schon drinnen sind (extends) so wie schaffe ich es aber jetzt die anderen construktoren zu "füllen" ohne nocheinmal die hauptklasse zu erstellen . . . (könnt ihr mir folgen ??) :autsch: Wurden die Construktoren mit vererbt ?? kann ich jetzt einfach das so machen:

a [nr] = (Titels, Datum); Hauptklasse (medien)
a [nr] = (Kopierschutz, specials); unterklasse (Film)
a [nr] = (Regionalcodes, Specials); unterklasse von film (DVD) ich habe nur diese erstellt will jetzt aber auch die
anderen construktoren übergeben können


so aber als wäre das nicht genug kommt jetzt nochwas dazu und zwar wie schaffe ich es den normalen contruktor ihm array zu deklarieren bis jetzt habe ich das immer so gemacht:

Konto k = new Konto ("Willi", 200,);

aber wie mache ich das beim array ?? ich habe es genau so probiert aber es geht net:

DVD a [] = new DVD [nr];
a [nr] = (Titels, Datum //übergabe von mehreren Werten);


bitte helft mir . . . :(

euer Gast
 

Henrik

Aktives Mitglied
Also wenn ich dich richtig verstanden habe wilst du wissen wie du den Konstruktor von eine Oberklasse aufruft,
das geht mit :


Code:
super();

im Kostruktor der Unterklasse (z.B. in DVD um Film aufzurufen) und zwar als erste anweisung.

Wenn deien Oberklasse jetzt bestimmt werte hat dann must du die zwischen die Klammer schreiben so als wenn du das Objekt von hande erstellst.

Code:
super(Wert1,Wert2);

Und bei Arrays must du alle Objekte einzeln erstellen so etwar:

Code:
//neues Konto Array der länge 3 erstellen
Konto[] karray =new Konto[3];

//3 neue Konten erstellen
karray[0] = new Konto ("Willi", 200); 
karray[1] = new Konto ("Hans", 300); 
karray[2] = new Konto ("Peter", 600);
 
G

Gast

Gast
Genau das meinte ich,

so nun habe ich in dem arry auch superklassen wie kann ich das dan machen ??

super [] medien = new super[5];
DVD [] dvd = new DVD [5];

super [0] = new super ("a", 1)
super [1] = new super ("b", 2)
super [2] = new super ("c", 3)
super [3] = new super ("d", 4)
super [4] = new super ("e", 5)

dvd [0] = new dvd (3)
dvd [1] = new dvd (4)
dvd [2] = new dvd (5)
dvd [3] = new dvd (6)
dvd [4] = new dvd (7)

geht das so und was mache ich für die unterunterklasse supersuper ???
 

Henrik

Aktives Mitglied
Nein du must die Superklassen Objekte nicht selbst erzeugen sondern du ruftst in deiner Unterklasse den kostruktor deiner Superklasse auf mittels

Code:
super();

wenn du das noch nicht ganz verstanden hast dann poste mal deinen Code daran läst sich das immer am besten erklären.
 
G

Gast

Gast
So hier ist es unten fehlt noch was im moment zeigt er mir immer an den stellen fehler die wir besprochen habe also an den super und an den stellen an den ich mehr als einen wert übergebe einen fehler an.



Code:
import javax.swing.*;
public class DVDtest2 {

  public static void main(final String[] args) {
  
    int zähler = 0;
    int nr = 0;
    
    System.out.println("Willkommen bei den Medienverwalter 2005 von ihrer Allianz");
    
    String abfrages = JOptionPane.showInputDialog("Was für ein Medium wollen sie Eingeben ?\n (DVD = 1, CD = 2, VHS = 3)");
    int abfrage = Integer.parseInt(abfrages);

    if(abfrage == 1) {
      String dvdabfrages = JOptionPane.showInputDialog("Wie viele DVDs wollen sie Eingeben ?");
      int dvdabfrage = Integer.parseInt(dvdabfrages);
      
      DVD a [] = new DVD[dvdabfrage];
    }

    if(abfrage == 2) {
      String cdabfrages = JOptionPane.showInputDialog("Wie viele CDs wollen sie Eingeben ?");
      int cdabfrage = Integer.parseInt(cdabfrages);
      
      CD a []= new CD[cdabfrage];
    }

    if(abfrage == 3) {
      String vhsabfrages = JOptionPane.showInputDialog("Wie viele VHS wollen sie Eingeben ?");
      int vhsabfrage = Integer.parseInt(vhsabfrages);
    
      VHS a []= new VHS[vhsabfrage];
    }




    for(int i = 0; i <= a.length ; i++) {

      String Titels = JOptionPane.showInputDialog("Welchen Titel hat das Medium ?");

      String Datums = JOptionPane.showInputDialog("Welchen Erfassungdatum hat das Medium ?");
      int Datum = Integer.parseInt(Datums);
      
      super (Titels, Datum);          //fehler   die unterste klasse     medien
    


      if(abfrage == 1 || abfrage == 3) {

        String Spieldauerstring = JOptionPane.showInputDialog("Bitte nennen sie die Spieldauer der DVD ?");
        int Spieldauer = Integer.parseInt(Spieldauerstring);
        
        String Kopierschutzs = JOptionPane.showInputDialog("Hat ihr Medium einen Kopierschutz ?");
        boolean Kopierschutz = Boolean.parseBoolean(Kopierschutzs);

        super (Spieldauer, Kopierschutz);     //fehler        die mittel klasse  filme


        if(abfrage == 1) {
        
          String Regionalcodes = JOptionPane.showInputDialog("Welchen Regionalcode verwendet ihre DVD ?");

          String Specialss = JOptionPane.showInputDialog("Sind auf der DVD Specials Vorhanden ?");
          boolean Specials = Boolean.parseBoolean(Specialss);

          a [nr] = new a(Regionalcodes, Specials);   //fehler     DVD

        }
        
        if(abfrage == 3) {
        
          String Selbstaufgenommens = JOptionPane.showInputDialog("Haben sie ihre VHS selbstaufgenommen ?");
          boolean Selbstaufgenommen = Boolean.parseBoolean(Selbstaufgenommens);

          String Werbungs = JOptionPane.showInputDialog("Ist auf der VHS Werbung vorhanden ?");
          boolean Werbung = Boolean.parseBoolean(Werbungs);

          a [nr] = new a (Selbstaufgenommen, Werbung);   //fehler     VHS

        }

      }
    
    
    
    
      if(abfrage == 2) {

        String Groesses = JOptionPane.showInputDialog("Wie Groß ist ihre CD ?");
        double Größe = Double.parseDouble(Groesses);

        String Themas = JOptionPane.showInputDialog("Was ist das Thema ihrer CD ?");

        a [nr] = new a (Größe, Themas);    //fehler    dierekte verbindung zu medien
      }


So ok hier ist es habe wo fehler sind sie auch angestrichen
 

Henrik

Aktives Mitglied
So wie du das gemacht hast kann das nicht klappen du must nicht alles einzeln erstellen sondern nur z.B. einen Film und beim erstellen des Films wird über den Konstruktor (also in der Klasse Film) der Konstruktor von Medium aufgerufen hier
mal ein kleines beispiel ich hoffe damit wird es klarer

Code:
package test;

class Medium{
	 String titels;
	 
	 //Konstruktor
	 public Medium(String titels){
		 this.titels=titels; 
	 }
}

class Film extends Medium{
	int spieldauer;
	//Konstruktor
	public Film (String titels,int spieldauer){
		super(titels);// Aufrufen des Konstruktors von Medium
		this.spieldauer=spieldauer;
	}
}

public class MediumTest {


	public static void main(String[] args) {
    // Neues Film Elemnt erstellen
	Film f=new Film("Superman", 120);

	}

}

Also nicht erst Medium erstellen dann Film und dann DVD sondern alle Daten für DVD zusamensammeln (Name, Spieldauer usw.) und dann nur DVD erstellen.
 
G

Gast

Gast
Super danke so dann gibts (hoffentlich) nur noch eins und zwar hast du das bei dir oben ja so geschrieben:
Code:
  public CD (String Titel, String Erfassungsdatum, double Groesse, String Thema){
    super (Titel);
    super (Erfassungsdatum);
    this.Größe = Groesse;
    this.Thema = Thema;

aber da zeigt mein java immer einen fehler an (java.lang.String) ist das so richtig oder nicht ??? vll so:

Code:
  public CD (String Titel, String Erfassungsdatum, double Groesse, String Thema){
    super.Titel;
    super.Erfassungsdatum;
    this.Größe = Groesse;
    this.Thema = Thema;
  }


oder
Code:
  public CD (String Titel, String Erfassungsdatum, double Groesse, String Thema){
    super.Titel= Titel;
    super.Erfassungsdatum = Erfassungsdatum;
    this.Größe = Groesse;
    this.Thema = Thema;
  }

wie immer würde ich mich um eine antwort freuen :D
 

Henrik

Aktives Mitglied
Hallo also du kanst immer nur den Kostruktor deiner Superklasse aufrufen und der wiederrum ruft dann wieder den Konstruktor seine Superklasse auf.

Code:
package test;

class Medium{
    String titels;
   
    //Konstruktor
    public Medium(String titels){
       this.titels=titels;
    }
}

class Film extends Medium{
   int spieldauer;
   //Konstruktor
   public Film (String titels,int spieldauer){
      super(titels);// Aufrufen des Konstruktors von Medium
      this.spieldauer=spieldauer;
   }
}

class VHS extends Film{
String sprache;
//Konstruktor
public VHS (String titels, int spieldauer, String sprache){
super(titels, spieldauer);// Ruft den Kostruktor von Film auf 
this.sprache=sprache;
}


public class MediumTest {


   public static void main(String[] args) {
    // Neues Film Elemnt erstellen
   Film f=new Film("Superman", 120);

   }

}

Das was du gemacht hast ist absolute falsch. Grude dafür ist das eigentlich alle Variabel private deklarirt werden sollen und man damit dann nicht mehr so direkt auf sie zugreifen kann. Das habe ich hier nur nicht gemacht weil man dann noch get und set Methoden braucht mit den man auf die Variabel zugreifen kann.
 
G

Gast

Gast
So ich danke dir super dolle das ist echt super nachilfe :toll:

und damit keinem langweilig wird (die letzten beiden fehler die mir java anzeigt) :oops:

einmal sagt er das das hier falsch ist:


Code:
      String dvdabfrages = JOptionPane.showInputDialog("Wie viele DVDs wollen sie Eingeben ?");
      int dvdabfrage = Integer.parseInt(dvdabfrages);

      DVD ad [] = new DVD[dvdabfrage];

      //jetzt kommt ne schleife
      
      ad [nr] = new ad (Titels, Datum, Spieldauer, Kopierschutz, Selbstaufgenommen, Werbung);

das will er nicht er sagt immer was mit dem ad (habe ich da was falsch gemacht??)


und das andere ist das er den befehl ad.length nicht anerkennt worann kann das liegen

MFG Nils
 

Henrik

Aktives Mitglied
Ich weis jetzt nicht wofür "nr" steht aber ich gehe mal davon aus das dass eine int ist und das du an der Stelle dein neues
DVD element haben wilst.

Code:
 DVD ad [] = new DVD[dvdabfrage];

      //jetzt kommt ne schleife
     
      ad [nr] = new DVD (Titels, Datum, Spieldauer, Kopierschutz, Selbstaufgenommen, Werbung);
So du must new DVD aufrufen und nicht new ad, du wist doch ein neues DVD Objekt erstellen.
 
G

Gast

Gast
So hmm ok der fehler ist immer noch das hier ist einmal das ganze programm er sagt mir jetzt immer was mit java.lang.String ich wei0 das das von der abfrage kommt weiß aber nicht was dagegen tun kann. Das .length problemm ist immer noch da.

Code:
import javax.swing.*;
public class DVDtest2 {

  public static void main(final String[] args) {
  
    int zähler = 0;
    int nr = 0;
    int dvdabfrage1;
    int cdabfrage1;
    int vhsabfrage1;
    
    
    System.out.println("Willkommen bei den Medienverwalter 2005 von ihrer Allianz");
    
    String abfrages = JOptionPane.showInputDialog("Was für ein Medium wollen sie Eingeben ?\n (DVD = 1, CD = 2, VHS = 3)");
    int abfrage = Integer.parseInt(abfrages);

    if(abfrage == 1) {
      String dvdabfrages = JOptionPane.showInputDialog("Wie viele DVDs wollen sie Eingeben ?");
      int dvdabfrage = Integer.parseInt(dvdabfrages);
      dvdabfrage = dvdabfrage1;

      DVD ad [] = new DVD[dvdabfrage];
    }

    if(abfrage == 2) {
      String cdabfrages = JOptionPane.showInputDialog("Wie viele CDs wollen sie Eingeben ?");
      int cdabfrage = Integer.parseInt(cdabfrages);
      cdabfrage = cdabfrage1;
      
      CD ad []= new CD[cdabfrage];
    }

    if(abfrage == 3) {
      String vhsabfrages = JOptionPane.showInputDialog("Wie viele VHS wollen sie Eingeben ?");
      int vhsabfrage = Integer.parseInt(vhsabfrages);
      vhsabfrage = vhsabfrage1;
    
      VHS ad []= new VHS[vhsabfrage];
    }


    for(int i = 0; i <= ad.length ; i++) {

      String Titels = JOptionPane.showInputDialog("Welchen Titel hat das Medium ?");

      String Datums = JOptionPane.showInputDialog("Welchen Erfassungdatum hat das Medium ?");
      int Datum = Integer.parseInt(Datums);
      
      //super (Titels, Datum);
      


      if(abfrage == 1 || abfrage == 3) {

        String Spieldauerstring = JOptionPane.showInputDialog("Bitte nennen sie die Spieldauer der DVD ?");
        int Spieldauer = Integer.parseInt(Spieldauerstring);
        
        String Kopierschutzs = JOptionPane.showInputDialog("Hat ihr Medium einen Kopierschutz ?");
        boolean Kopierschutz = Boolean.parseBoolean(Kopierschutzs);

       // super (Spieldauer, Kopierschutz);


        if(abfrage == 1) {
        
          String Regionalcodes = JOptionPane.showInputDialog("Welchen Regionalcode verwendet ihre DVD ?");


          String Specialss = JOptionPane.showInputDialog("Sind auf der DVD Specials Vorhanden ?");
          boolean Specials = Boolean.parseBoolean(Specialss);

          ad [nr] = new DVD (Titels, Datum, Spieldauer, Kopierschutz, Regionalcodes, Specials);

        }
        
        if(abfrage == 3) {
        
          String Selbstaufgenommens = JOptionPane.showInputDialog("Haben sie ihre VHS selbstaufgenommen ?");
          boolean Selbstaufgenommen = Boolean.parseBoolean(Selbstaufgenommens);

          String Werbungs = JOptionPane.showInputDialog("Ist auf der VHS Werbung vorhanden ?");
          boolean Werbung = Boolean.parseBoolean(Werbungs);

          ad [nr] = new VHS (Titels, Datum, Spieldauer, Kopierschutz, Selbstaufgenommen, Werbung);

        }

      }
    
    
    
    
      if(abfrage == 2) {

        String Groesses = JOptionPane.showInputDialog("Wie Groß ist ihre CD ?");
        double Größe = Double.parseDouble(Groesses);

        String Themas = JOptionPane.showInputDialog("Was ist das Thema ihrer CD ?");

        ad [nr] = new CD (Titels, Datum, Größe, Themas);
      }



      
      if(zähler == ad.length) {
        String nochmals = JOptionPane.showInputDialog("Ihre vorhin angebene anzahl von Medien ist erreicht wollen sie noch weitere eingeben ? \n Wenn ja dann geben sie jetzt bitte die 1 ein wenn nicht die 2!");
        int nochmal = Integer.parseInt(nochmals);
      
        if(abfrage == 1) {
          String dvdabfrages2 = JOptionPane.showInputDialog("Wie viele DVDs wollen sie noch Eingeben ?");
          int dvdabfrage2 = Integer.parseInt(dvdabfrages2);
          dvdabfrage2 = dvdabfrage2 + dvdabfrage1;
          DVD a [] = new DVD[dvdabfrage2];
        }

        if(abfrage == 2) {
          String cdabfrages2 = JOptionPane.showInputDialog("Wie viele CDs wollen sie noch Eingeben ?");
          int cdabfrage2 = Integer.parseInt(cdabfrages2);
          cdabfrage2 = cdabfrage2 + cdabfrage1;
          CD a []= new CD[cdabfrage2];
        }

        if(abfrage == 3) {
          String vhsabfrages2 = JOptionPane.showInputDialog("Wie viele VHS wollen sie noch Eingeben ?");
          int vhsabfrage2 = Integer.parseInt(vhsabfrages2);
          vhsabfrage2 = vhsabfrage2 + vhsabfrage1;
          VHS a []= new VHS[vhsabfrage2];
        }
        

        if(zähler = ad.length) {
        String aenderns = JOptionPane.showInputDialog("Wollen sie noch andere medien angeben ?\n (DVD = 1, CD = 2, VHS = 3)");
        int aendern = Integer.parseInt(aenderns);
        abfrage = aendern;
        }
        
        
        
      }
      
      zähler++;
      nr++;
      

    }
    
    for(int w = 0; w <= 0; w++ ) {
      System.out.println("Ihr medium mit der Nummer " + w + "hat folgende attribute ;\n" + ad.toString(--nr) );
    }
    
    System.out.println("Ich hoffe sie hatten Spass bei diesem Programm ich habe dafür den ganzen Sonntag gebraucht \n MfG Nils M." );
  }
}
 
G

Guest

Gast
So habs eben nochmal verbessert weiß nun wo der fehler ist ich habe ja alle objekte in if schleifen gesetzt und deshalb zeigt er mir die fehler alle an da die objekte dann wohl nur in der if-bedingung gehen aber wie umgehe ich das ??? gibt es da vielleicht irgendein wort was es ermöglich das auch ausserhalb der bedingung zu ermöglichen ???

und hier nochmal das programm (updated ) :lol:

Code:
/**
  *
  * Beschreibung.
  *
  * @version 1.0 vom 12.04.2005
  * @author
  */
  
import java.util.*;
import javax.swing.*;
public class DVDtest2 {

  public static void main(final String[] args) {
  
    GregorianCalendar c = new GregorianCalendar();
    int Datum1 = c.get(Calendar.DAY_OF_MONTH);
    int Datum2 = c.get(Calendar.MONTH);
    

    int zähler = 0;
    int nr = 0;
    int dvdabfrage1;
    int cdabfrage1;
    int vhsabfrage1;
    
    
    System.out.println("Willkommen bei den Medienverwalter 2005 von ihrer Allianz");
    
    String abfrages = JOptionPane.showInputDialog("Was für ein Medium wollen sie Eingeben ?\n (DVD = 1, CD = 2, VHS = 3)");
    int abfrage = Integer.parseInt(abfrages);


    if(abfrage == 1) {
      String dvdabfrages = JOptionPane.showInputDialog("Wie viele DVDs wollen sie Eingeben ?");
      int dvdabfrage = Integer.parseInt(dvdabfrages);
      dvdabfrage = dvdabfrage1;

      DVD ad [] = new DVD[dvdabfrage];
    }

    if(abfrage == 2) {
      String cdabfrages = JOptionPane.showInputDialog("Wie viele CDs wollen sie Eingeben ?");
      int cdabfrage = Integer.parseInt(cdabfrages);
      cdabfrage = cdabfrage1;
      
      CD ad []= new CD[cdabfrage];
    }

    if(abfrage == 3) {
      String vhsabfrages = JOptionPane.showInputDialog("Wie viele VHS wollen sie Eingeben ?");
      int vhsabfrage = Integer.parseInt(vhsabfrages);
      vhsabfrage = vhsabfrage1;
    
      VHS ad []= new VHS[vhsabfrage];
    }


    for(int i = 0; i <= ad.length ; i++) {

      String Titels = JOptionPane.showInputDialog("Welchen Titel hat das Medium ?");


      if(abfrage == 1 || abfrage == 3) {

        String Spieldauerstring = JOptionPane.showInputDialog("Bitte nennen sie die Spieldauer der DVD ?");
        int Spieldauer = Integer.parseInt(Spieldauerstring);
        
        String Kopierschutzs = JOptionPane.showInputDialog("Hat ihr Medium einen Kopierschutz ?");
        boolean Kopierschutz = Boolean.parseBoolean(Kopierschutzs);



        if(abfrage == 1) {
        
          String Regionalcodes = JOptionPane.showInputDialog("Welchen Regionalcode verwendet ihre DVD ?");


          String Specialss = JOptionPane.showInputDialog("Sind auf der DVD Specials Vorhanden ?");
          boolean Specials = Boolean.parseBoolean(Specialss);

          ad [nr] = new DVD (Titels, Datum1, Datum2, Spieldauer, Kopierschutz, Regionalcodes, Specials);

        }
        
        if(abfrage == 3) {
        
          String Selbstaufgenommens = JOptionPane.showInputDialog("Haben sie ihre VHS selbstaufgenommen ?");
          boolean Selbstaufgenommen = Boolean.parseBoolean(Selbstaufgenommens);

          String Werbungs = JOptionPane.showInputDialog("Ist auf der VHS Werbung vorhanden ?");
          boolean Werbung = Boolean.parseBoolean(Werbungs);

          ad [nr] = new VHS (Titels, Datum1, Datum2, Spieldauer, Kopierschutz, Selbstaufgenommen, Werbung);

        }

      }
    
    
    
    
      if(abfrage == 2) {

        String Groesses = JOptionPane.showInputDialog("Wie Groß ist ihre CD ?");
        double Größe = Double.parseDouble(Groesses);

        String Themas = JOptionPane.showInputDialog("Was ist das Thema ihrer CD ?");

        ad [nr] = new CD (Titels, Datum1, Datum2, Größe, Themas);
      }



      
      if(zähler == ad.length) {
        String nochmals = JOptionPane.showInputDialog("Ihre vorhin angebene anzahl von Medien ist erreicht wollen sie noch weitere eingeben ? \n Wenn ja dann geben sie jetzt bitte die 1 ein wenn nicht die 2!");
        int nochmal = Integer.parseInt(nochmals);
      
        if(nochmal == 1) {

          if(abfrage == 1) {
            String dvdabfrages2 = JOptionPane.showInputDialog("Wie viele DVDs wollen sie noch Eingeben ?");
            int dvdabfrage2 = Integer.parseInt(dvdabfrages2);
            dvdabfrage2 = dvdabfrage2 + dvdabfrage1;
            DVD a [] = new DVD[dvdabfrage2];
          }

          if(abfrage == 2) {
            String cdabfrages2 = JOptionPane.showInputDialog("Wie viele CDs wollen sie noch Eingeben ?");
            int cdabfrage2 = Integer.parseInt(cdabfrages2);
            cdabfrage2 = cdabfrage2 + cdabfrage1;
            CD a []= new CD[cdabfrage2];
          }

          if(abfrage == 3) {
            String vhsabfrages2 = JOptionPane.showInputDialog("Wie viele VHS wollen sie noch Eingeben ?");
            int vhsabfrage2 = Integer.parseInt(vhsabfrages2);
            vhsabfrage2 = vhsabfrage2 + vhsabfrage1;
            VHS a []= new VHS[vhsabfrage2];
          }
          
        }

        if(zähler == ad.length) {
        String aenderns = JOptionPane.showInputDialog("Wollen sie noch andere medien angeben ?\n (DVD = 1, CD = 2, VHS = 3)");
        int aendern = Integer.parseInt(aenderns);
        abfrage = aendern;
        }
        
        
        
      }
      
      zähler++;
      nr++;
      

    }
    
    for(int w = 0; w <= 0; w++ ) {
      System.out.println("Ihr medium mit der Nummer " + w + "hat folgende attribute ;\n" + ad.toString() );
    }
    
    System.out.println("Ich hoffe sie hatten Spass bei diesem Programm ich habe dafür den ganzen Sonntag gebraucht \n MfG Nils M." );
  }
}
 
G

Gast

Gast
Compiliere C:\Programme\JavaEditor\DVDtest2.java mit Java-Compiler
DVDtest2.java:58: cannot find symbol
symbol : variable ad
location: class DVDtest2
for(int i = 0; i <= ad.length ; i++) {
^
DVDtest2.java:81: cannot find symbol
symbol : variable ad
location: class DVDtest2
ad [nr] = new DVD (Titels, Datum1, Datum2, Spieldauer, Kopierschutz, Regionalcodes, Specials);
^
DVDtest2.java:93: cannot find symbol
symbol : variable ad
location: class DVDtest2
ad [nr] = new VHS (Titels, Datum1, Datum2, Spieldauer, Kopierschutz, Selbstaufgenommen, Werbung);
^
DVDtest2.java:93: cannot find symbol
symbol : constructor VHS(java.lang.String,int,int,int,boolean,boolean,boolean)
location: class VHS
ad [nr] = new VHS (Titels, Datum1, Datum2, Spieldauer, Kopierschutz, Selbstaufgenommen, Werbung);
^
DVDtest2.java:109: cannot find symbol
symbol : variable ad
location: class DVDtest2
ad [nr] = new CD (Titels, Datum1, Datum2, Größe, Themas);
^
DVDtest2.java:115: cannot find symbol
symbol : variable ad
location: class DVDtest2
if(zähler == ad.length) {
^
DVDtest2.java:144: cannot find symbol
symbol : variable ad
location: class DVDtest2
if(zähler == ad.length) {
^
DVDtest2.java:161: cannot find symbol
symbol : variable ad
location: class DVDtest2
System.out.println("Ihr medium mit der Nummer " + w + "hat folgende attribute ;\n" + ad.toString() );
^
8 errors
 

Henrik

Aktives Mitglied
Gute der Fehler ist das du Variabeln (dein Array) nur in dem bereich sichbar sind wo sie erstellt wurden das heißet immer nur bis die näste übergeordnet geschweifte klammer geschlossen wird

Beispiele

Code:
    if(abfrage == 2) {
      String cdabfrages = JOptionPane.showInputDialog("Wie viele CDs wollen sie Eingeben ?");
      int cdabfrage = Integer.parseInt(cdabfrages);
      cdabfrage = cdabfrage1;
     
      CD ad []= new CD[cdabfrage];
    } // ab hier exestiert  ad nicht mehr

Lösungsmöglichkeiten

1. Du erstelst am anfang (beginn der Methode)ein Medium Array
heist du machst folgendes


Code:
Medium[] ad;

und inizalisirst es später so:

Code:
ad=new CD[nr];
Nachteil du kanst nur auf die Methoden und Variabeln die in Medium devinirt sind zugreifen oder du must Casten.
oder 2 möglichkeit:

du erstelst am anfang für alle sachen ein eigenes Arrray

Beispeile
Code:
VHS[] v;
DVD [] d;
CD[] c;
usw.

und erstelst dann bei deiner if abfrage das enstprächende

z.B. er wählt VHS aus dann machst du


Code:
v=new VHS[nr];
 
hmm habe das mal mit den medium ausprobiert jetzt sagt er nur das er das symbol nicht finden kann, ich habe jetzt einfach ganz am anfang das so deklariert:

Code:
Medium ad [];

    System.out.println("Willkommen bei den Medienverwalter 2005 von Nils Mueller");
    
    String abfrages = JOptionPane.showInputDialog("Was für ein Medium wollen sie Eingeben ?\n (DVD = 1, CD = 2, VHS = 3)");
    int abfrage = Integer.parseInt(abfrages);


    if(abfrage == 1) {
      String dvdabfrages = JOptionPane.showInputDialog("Wie viele DVDs wollen sie Eingeben ?");
      int dvdabfrage = Integer.parseInt(dvdabfrages);
      dvdabfrage = dvdabfrage1;

      ad = new DVD[dvdabfrage];
    }

    if(abfrage == 2) {
      String cdabfrages = JOptionPane.showInputDialog("Wie viele CDs wollen sie Eingeben ?");
      int cdabfrage = Integer.parseInt(cdabfrages);
      cdabfrage = cdabfrage1;
      
      ad = new CD[cdabfrage];
    }

    if(abfrage == 3) {
      String vhsabfrages = JOptionPane.showInputDialog("Wie viele VHS wollen sie Eingeben ?");
      int vhsabfrage = Integer.parseInt(vhsabfrages);
      vhsabfrage = vhsabfrage1;
    
      ad = new VHS[vhsabfrage];
    }

ist das so richtig ??? also ist medium so eine Art freistell zeichen das mann später füllt oder habe ich da jetzt was falsch verstanden ??
 
So nochmal das programm mit fehlermeldung;

prog;

Code:
/**
  *
  * KA.
  *
  * @version 1.0 vom 12.04.2005
  * @Nils Müller
  */

import java.util.*;
import javax.swing.*;
public class DVDtest2 {

  public static void main(final String[] args) {
  
    GregorianCalendar c = new GregorianCalendar();
    int Datum1 = c.get(Calendar.DAY_OF_MONTH);
    int Datum2 = c.get(Calendar.MONTH);
    

    int zähler = 0;
    int nr = 0;
    int dvdabfrage1;
    int cdabfrage1;
    int vhsabfrage1;
    
    Medium ad [];

    System.out.println("Willkommen bei den Medienverwalter 2005 von Nils Mueller");
    
    String abfrages = JOptionPane.showInputDialog("Was für ein Medium wollen sie Eingeben ?\n (DVD = 1, CD = 2, VHS = 3)");
    int abfrage = Integer.parseInt(abfrages);


    if(abfrage == 1) {
      String dvdabfrages = JOptionPane.showInputDialog("Wie viele DVDs wollen sie Eingeben ?");
      int dvdabfrage = Integer.parseInt(dvdabfrages);

      ad = new DVD[dvdabfrage];
    }

    if(abfrage == 2) {
      String cdabfrages = JOptionPane.showInputDialog("Wie viele CDs wollen sie Eingeben ?");
      int cdabfrage = Integer.parseInt(cdabfrages);
      
      ad = new CD[cdabfrage];
    }

    if(abfrage == 3) {
      String vhsabfrages = JOptionPane.showInputDialog("Wie viele VHS wollen sie Eingeben ?");
      int vhsabfrage = Integer.parseInt(vhsabfrages);
    
      ad = new VHS[vhsabfrage];
    }


    for(int i = 0; i <= ad.length ; i++) {

      String Titels = JOptionPane.showInputDialog("Welchen Titel hat das Medium ?");


      if(abfrage == 1 || abfrage == 3) {

        String Spieldauerstring = JOptionPane.showInputDialog("Bitte nennen sie die Spieldauer der DVD ?");
        int Spieldauer = Integer.parseInt(Spieldauerstring);
        
        String Kopierschutzs = JOptionPane.showInputDialog("Hat ihr Medium einen Kopierschutz ?\n\t (JA = true\tNEIN = false)");
        boolean Kopierschutz = Boolean.parseBoolean(Kopierschutzs);



        if(abfrage == 1) {
        
          String Regionalcodes = JOptionPane.showInputDialog("Welchen Regionalcode verwendet ihre DVD ?");


          String Specialss = JOptionPane.showInputDialog("Sind auf der DVD Specials Vorhanden ?\n\t (JA = true\tNEIN = false)");
          boolean Specials = Boolean.parseBoolean(Specialss);

          ad [nr] = new DVD (Titels, Datum1, Datum2, Spieldauer, Kopierschutz, Regionalcodes, Specials);

        }
        
        if(abfrage == 3) {
        
          String Selbstaufgenommens = JOptionPane.showInputDialog("Haben sie ihre VHS selbstaufgenommen ?\n\t (JA = true\tNEIN = false)");
          boolean Selbstaufgenommen = Boolean.parseBoolean(Selbstaufgenommens);

          String Werbungs = JOptionPane.showInputDialog("Ist auf der VHS Werbung vorhanden ?\n\t (JA = true\tNEIN = false)");
          boolean Werbung = Boolean.parseBoolean(Werbungs);

          ad [nr] = new VHS (Titels, Datum1, Datum2, Spieldauer, Kopierschutz, Selbstaufgenommen, Werbung);

        }

      }
    
    
    
    
      if(abfrage == 2) {

        String Groesses = JOptionPane.showInputDialog("Wie Groß ist ihre CD ?");
        double Größe = Double.parseDouble(Groesses);

        String Themas = JOptionPane.showInputDialog("Was ist das Thema ihrer CD ?");

        ad [nr] = new CD (Titels, Datum1, Datum2, Größe, Themas);
      }



      
      if(zähler == ad.length) {
        String nochmals = JOptionPane.showInputDialog("Ihre vorhin angebene anzahl von Medien ist erreicht wollen sie noch weitere eingeben ? \n Wenn ja dann geben sie jetzt bitte die 1 ein wenn nicht die 2!");
        int nochmal = Integer.parseInt(nochmals);
      
        if(nochmal == 1) {

          if(abfrage == 1) {
            String dvdabfrages2 = JOptionPane.showInputDialog("Wie viele DVDs wollen sie noch Eingeben ?");
            int dvdabfrage2 = Integer.parseInt(dvdabfrages2);
            dvdabfrage2 = dvdabfrage2 + dvdabfrage1;
            ad = new DVD[dvdabfrage2];
          }

          if(abfrage == 2) {
            String cdabfrages2 = JOptionPane.showInputDialog("Wie viele CDs wollen sie noch Eingeben ?");
            int cdabfrage2 = Integer.parseInt(cdabfrages2);
            cdabfrage2 = cdabfrage2 + cdabfrage1;
            ad = new CD[cdabfrage2];
          }

          if(abfrage == 3) {
            String vhsabfrages2 = JOptionPane.showInputDialog("Wie viele VHS wollen sie noch Eingeben ?");
            int vhsabfrage2 = Integer.parseInt(vhsabfrages2);
            vhsabfrage2 = vhsabfrage2 + vhsabfrage1;
            ad = new VHS[vhsabfrage2];
          }
          
        }

        if(zähler == ad.length) {
          String aenderns = JOptionPane.showInputDialog("Wollen sie noch andere medien angeben ?\n (DVD = 1, CD = 2, VHS = 3)");
          int aendern = Integer.parseInt(aenderns);
          abfrage = aendern;
          
          
              if(abfrage == 1) {
                String dvdabfrages = JOptionPane.showInputDialog("Wie viele DVDs wollen sie Eingeben ?");
                int dvdabfrage = Integer.parseInt(dvdabfrages);
                dvdabfrage = dvdabfrage1;

                ad = new DVD[dvdabfrage];
              }

              if(abfrage == 2) {
                String cdabfrages = JOptionPane.showInputDialog("Wie viele CDs wollen sie Eingeben ?");
                int cdabfrage = Integer.parseInt(cdabfrages);
                cdabfrage = cdabfrage1;

                ad = new CD[cdabfrage];
              }

              if(abfrage == 3) {
                String vhsabfrages = JOptionPane.showInputDialog("Wie viele VHS wollen sie Eingeben ?");
                int vhsabfrage = Integer.parseInt(vhsabfrages);
                vhsabfrage = vhsabfrage1;

                ad = new VHS[vhsabfrage];
              }
          
        }
        
        
        
      }
      
      zähler++;
      nr++;
      

    }
    
    for(int w = 0; w <= 0; w++ ) {
      int g = 0;
      System.out.println("Ihr medium mit der Nummer " + g++ + "hat folgende attribute ;\n" + ad.toString() );
    }
    
    System.out.println("Ich hoffe sie hatten Spass bei diesem Programm ich habe dafür den ganzen Sonntag gebraucht \n MfG Nils M." );
  }
}


Fehlermeldung:

Compiliere C:\Programme\JavaEditor\DVDtest2.java mit Java-Compiler
DVDtest2.java:26: cannot find symbol
symbol : class Medium
location: class DVDtest2
Medium ad [];
^
DVDtest2.java:91: cannot find symbol
symbol : constructor VHS(java.lang.String,int,int,int,boolean,boolean,boolean)
location: class VHS
ad [nr] = new VHS (Titels, Datum1, Datum2, Spieldauer, Kopierschutz, Selbstaufgenommen, Werbung);
^
2 errors
 

Henrik

Aktives Mitglied
So die erst Fehlermeldung sagt das der Compiler nicht deine Classe Medium finden kann vieleicht hast du die Falschgeschrieben.
Und bei der 2 Fehlermeldung stimmen die Werte die du dem VHS Kostruktor übergibst nicht mit den Werten überein die er erwarte kontrolier noch mal ob das auch wirklich stimmt.
 
G

Gast, der den Gast kennt

Gast
nächstes mal bitte ein wenig unauffälliger, nich, das es wieder die ganze klasse findet un kopiert ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
G Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen


Oben