Fehlersuche

FiselM

Mitglied
Ich habe hier zwei Klassen TerminplanUI und Terminplan zum Verwalten von Terminen.
Ich bin noch relativ neu im Java Programmierumfeld und würde mal einen erfahrenen Kolegen bitten das er sich die beiden Klassen mal anschaut und mir versucht zu erklären
wo ich einen Fehler eingebaut habe oder ob ich den bisher erstellten Teil schon richtig habe?

Java:
/**
 * Beschreiben Sie hier die Klasse TerminplanerUI.
 * 
 * @author (Michael Fisel) 
 * @version (11.01.2008)
 */
import ConsoleInOut.*;
import java.util.*;
import java.text.*;
import java.util.ArrayList;
import java.util.Iterator;
class TerminplanUI
{

 public static void main(String arg[])
  {  
     int eingabe = 0;
     int year = 0;
     int month = 0;
     int date = 0;
     String beschreibung;
     
     while (eingabe!= 3)
     {
         
          System.out.println("----------------------------------------------------------------------");
          System.out.println("Bitte wählen Sie zwischen folgenden Funktionen: ");
          System.out.println();
          System.out.println("Neuer Termin:      1");
          System.out.println("Termine anzeigen:  2");
          System.out.println("Anwendung beenden: 3");
          System.out.println("----------------------------------------------------------------------");
          eingabe = Console.console_in_int();
          
          if (eingabe == 1)
            {
                
                System.out.println();
                System.out.println("Bitte geben Sie den Termin ein: ");
                System.out.println("Jahr: ");
                year = Console.console_in_int();
                System.out.println("Monat: ");
                month = Console.console_in_int();
                System.out.println("Tag: ");
                date = Console.console_in_int();
                System.out.println("Terminbeschreibung: ");
                beschreibung = Console.console_in();
                System.out.println();
          
            }
          if (eingabe == 2)
            {
                System.out.println("Inhalt des Terminkalenders");
                System.out.println("----------------------------------------------------------------------");
                /**
                *Hier erfolgt die Ausgabe und zwar nach der reihenfolge das dernächste Termin als erstes angegeben
                *werden soll                
                */
                System.out.println();

            }
          if ((eingabe != 1) && (eingabe != 2) && (eingabe != 3))  
            {
                System.out.println("Falsche Eingabe - Bitte neu wählen im Menue");
            }
      }
     System.out.println("Die Anwendung wurde beendet.");
     
 }
         
/**
* public static String getDateAsString(Date date) 
*              {        
*                  SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
*                  return format.format(date);
*              } 
*/
}

Java:
import ConsoleInOut.*;
import java.util.*;
import java.text.*;
import java.util.ArrayList;
import java.util.Iterator;

public class Terminplan
{

private ArrayList<Calendar> Date;

 //Attribute
 private String beschreibung;
 //private Calendar date;
 //Konstruktor
 public Terminplan()
 {
      List Date = new ArrayList<Calendar>();
 }
 
 public String getBeschreibung()
 {
  return beschreibung;
 }
 public Calendar getDate(Calendar Date)
 {
    return Date;
    }
 
 //Schreibende Methoden

 public void setBeschreibung(String Beschreibung)
 {
  beschreibung = Beschreibung;
 }
  public void setDate(Calendar Date, int year, int month, int date)
 
         { 
             Date.set( Calendar.YEAR, year );
             Date.set( Calendar.MONTH, month );
             Date.set( Calendar.DATE, date );
         }
        }

Für nützliche Ratschläge wäre ich sehr dankbar? Im Schnelldurchlauf noch die Programmerklärung. Einstieg mit Klasse TerminplanerUI bei Option 1 soll man einen
Termin mit beschreibung erfassen können. Bei nochmals Option 1 soll man einen
weiteren Termin erfassen können. Bei der Option 2 sollen die Termin der Reihe nach
erscheinen und zwar in der Reihenfolge das der nächste Termin als erstes(oben erscheint)

Viele Grüße, Michael
 
Kurz um, du willst ein Code Review^^

Ein paar Tips von mir...:

Die ganzen ifs, welcher Menüpunkt ausgewählt wurde, am besten in eine switch Anweisung packen.:suchen:

Die Getter und Setter solltest du überarbeiten.

Bei den Gettern übergibt man nichts und holt die Klassenvariable.
Bei den Settern übergibt man die zu setzende Variable(Namen auch hier kleingeschriebenden).
Diese Methode sieht sehr verwirrend aus.
Java:
 public Calendar getDate(Calendar Date)

 {
    return Date;

    }

Beim Setter macht man meistens this.variable = variable

P.S.: Die Getter und Setter lassen sich von eclipse auch automatisch generieren.

Beachte auch bitte die Sun Code Konvention http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
Daher alle Variablennamen(außer z.B. globale Konstanten) klein schreiben "Höckerschreibweise"


Dann geht es weiter....setDate ist hier der falsche Ausdruck...da du eigentlich hier nur die übergebene Variable veränderst...aber du fügst nichts deiner Termine ArrayList hinzu...addDate würde es eher heißen.
 
Zuletzt bearbeitet:
Könnte ich noch jemand Bitten mir mal einen Code rewiey geben ob ich in den folgenden beiden Codes einen Fehler drinnen habe. Die If- Anwendung könnten durch Case Bdeingungen ersetzt werden, aber das sollte nicht das Problem sein?

Java:
/**
 * Beschreiben Sie hier die Klasse TerminplanerUI.
 * 
 * @author (Michael Fisel) 
 * @version (11.01.2008)
 */
import ConsoleInOut.*;
import java.util.*;
import java.text.*;
import java.util.ArrayList;
import java.util.Iterator;
class TerminplanUI
{

 public static void main(String arg[])
  {  
     int eingabe = 0;
     int year = 0;
     int month = 0;
     int date = 0;
     String beschreibung;
     
     while (eingabe!= 3)
     {
         
          System.out.println("----------------------------------------------------------------------");
          System.out.println("Bitte wählen Sie zwischen folgenden Funktionen: ");
          System.out.println();
          System.out.println("Neuer Termin:      1");
          System.out.println("Termine anzeigen:  2");
          System.out.println("Anwendung beenden: 3");
          System.out.println("----------------------------------------------------------------------");
          eingabe = Console.console_in_int();
          
          if (eingabe == 1)
            {
                
                System.out.println();
                System.out.println("Bitte geben Sie den Termin ein: ");
                System.out.println("Jahr: ");
                year = Console.console_in_int();
                System.out.println("Monat: ");
                month = Console.console_in_int();
                System.out.println("Tag: ");
                date = Console.console_in_int();
                System.out.println("Terminbeschreibung: ");
                beschreibung = Console.console_in();
                System.out.println();
          
            }
          if (eingabe == 2)
            {
                System.out.println("Inhalt des Terminkalenders");
                System.out.println("----------------------------------------------------------------------");
                /**
                *Hier erfolgt die Ausgabe und zwar nach der reihenfolge das dernächste Termin als erstes angegeben
                *werden soll                
                */
                System.out.println();

            }
          if ((eingabe != 1) && (eingabe != 2) && (eingabe != 3))  
            {
                System.out.println("Falsche Eingabe - Bitte neu wählen im Menue");
            }
      }
     System.out.println("Die Anwendung wurde beendet.");
     
 }
         
/**
* public static String getDateAsString(Date date) 
*              {        
*                  SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
*                  return format.format(date);
*              } 
*/
}

Java:
import ConsoleInOut.*;
import java.util.*;
import java.text.*;
import java.util.ArrayList;
import java.util.Iterator;

public class Terminplan
{

private ArrayList<Calendar> Date;
private int year, month, date;
 //Attribute
 private String beschreibung;
 //private Calendar date;
 //Konstruktor
 public Terminplan(int year, int month, int date, String beschreibung)
 {
      List Date = new ArrayList<Calendar>();
      this.year=year;
      this.month= month;
      this.date=date;
      
 }
 
 public String getBeschreibung()
 {
  return beschreibung;
 }
 public Calendar getDate(Calendar Date)
 {
    return Date;
    }
 
 //Schreibende Methoden

 public void setBeschreibung(String Beschreibung)
 {
  beschreibung = Beschreibung;
 }
  public void setDate(Calendar Date, int year, int month, int date)
         { 
             Date.add( Calendar.YEAR, year );
             Date.add( Calendar.MONTH, month );
             Date.add( Calendar.DATE, date );
         }
        }

Ich wei nicht ob der Ablauf hier so passt? kann mir jemand noch mitteilen wie ich auf eine ArraList zugreifen kann?

Viele Grüße, Michael
 
Zuletzt bearbeitet von einem Moderator:
Wie wärs, du konsultierst deinen persönlichen Privatlehrer - den Compiler?

@ArrayList - bitte ankreuzen:

[ ] - Ich weiß, dass es Klassen und Objekte gibt
[ ] - Ich weiß, dass man auf Objekten Methoden rufen kann
[ ] - Ich kann JavaDoc lesen

Gruß
Ollie
 
Zuletzt bearbeitet:
Das ist aber nett wie ihr mit den Fragen umgeht und vor allem mit dennen die sie stellen.
Sagen wir es mal so? Das ist wie beim Autofahren einige können Autofahren aber zuerst muss jeder mal in die Fahrschule und ein paar Dinge lernen? Aber deswegen kann man
jedem ob Anfänger oder Profi trotzdem Respekt entgegenbringen , oder?
 
Verzeih meinen ironischen Unterton. Aber es hatten sich ja schon andere Mitglieder hier negativ zu deiner Art Posts zu schreiben geäußert. Es gibt hier eine Nettiquette und du hast mehrere Hinweise bekommen, wie du doch bitte konkretere Fragen formulierst. Hier war ich noch diplomatisch. Wenn du dann allerdings ohne Reflektion weiter so machst, das Forum mit Doppelposts zuspammst und Threadtitel wie "Fehlersuche" wählst, die erstens Unheimlich nichtssagend sind und so daherkommen wie "hier - sucht mal Fehler", wirst du wohl in Zukunft vergeblich auf Hilfe hoffen.

Aber ich nehm dich gern nochmal an die Hand und frage zurück, in der Hoffnung, dass du in Zukunft präzisere Fragen stellst:

Wo genau liegt denn dein Problem mit der ArrayList? Für Grundsätzliche Handhabung der Javaklassen solltest du die JavaInsel zur Hand wissen und lernen mit dem JavaDoc umzugehen. Die Lektüre der Stickythreads hier, sollten diese zwei Informationsquellen eigentlich zur Pflichlektüre machen.

Gruß
Ollie
 
Hallo Olli, auch ich möchte mich bei Dir entschuldigen, und auch bei den anderen Mitgliedern für meine verbale falschen Darstellungen im Forum. Das Problem dabei ist,
das ich als Neuling in dem Bereich mir oft nicht mehr zu Helfen weiss und ich meine Probleme auch sehr schwer Rüberbringen kann und so kommen oft die hilflos wirkenden
Postings von mir zustande. Ich werde in Zukunft versuchen meine Qualität der beiträge zu
erhöhen und die unqualifiziert(nicht beabsichtigten Kommentare zu sparen.

Nun zurück zu meinem Problem so (mit Ausnhame der If- Klauseln , die nicht schön sind, aber momentan die funktionalität auch nicht beeinträchtigen) erfasse ich in der TerminplanUI mit 1 die Daten. Die übergabe sollte in die Klasse Terminplan erfolgen.
Nur bin ich mir nicht sicher ob mein Konstrukt mit der ArrayList und dem Calendar so funktioniert (bekomme auf dem Compiler bei beiden keine Fehlermeldung und kann erfassen). Desweiteren werde ich versuchen die Array List wieder in die TerminplanUI zurückgeben um die Termine in Reihenfolge anzuzeigen(nächste Termin als erstes)?

Ich habe jetzt einen Stand der bis dahin korrekt ist oder nicht? das wäre meiner erste Frage und dann muss ich die Daten wieder in TerminplanUI zurückbekommen?

Was mir auch hilft sind Beispiele in der solch ein (ähnliches)Problem schon gelöst wurde
um dann meine Lösung abzugleichen?

Viele Grüße,

Michael
 
ArrayList Klassen

Ich bekomme in der Klasse TerminplanUI beim Compilieren einen Fehler ')' expected. Ich kann mit der Fehlermeldung nicht so arg viel anfenagen. Bitte um Unterstützung?

Java:
/**
 * Beschreiben Sie hier die Klasse TerminplanerUI.
 * 
 * @author (Michael Fisel) 
 * @version (11.01.2008)
 */
import ConsoleInOut.*;
import java.util.*;
import java.text.*;
import java.util.ArrayList;
import java.util.Iterator;
class TerminplanUI
{

 public static void main(String arg[])
  {  
     int eingabe = 0;
     int year = 0;
     int month = 0;
     int date = 0;
     String beschreibung;
     
     while (eingabe!= 3)
     {
         
          System.out.println("----------------------------------------------------------------------");
          System.out.println("Bitte wählen Sie zwischen folgenden Funktionen: ");
          System.out.println();
          System.out.println("Neuer Termin:      1");
          System.out.println("Termine anzeigen:  2");
          System.out.println("Anwendung beenden: 3");
          System.out.println("----------------------------------------------------------------------");
          eingabe = Console.console_in_int();
          
          if (eingabe == 1)
            {
                
                System.out.println();
                System.out.println("Bitte geben Sie den Termin ein: ");
                System.out.println("Jahr: ");
                year = Console.console_in_int();
                System.out.println("Monat: ");
                month = Console.console_in_int();
                System.out.println("Tag: ");
                date = Console.console_in_int();
                System.out.println("Terminbeschreibung: ");
                beschreibung = Console.console_in();
                System.out.println();
                List Terminplan = new ArrayList();
            }
          if (eingabe == 2)
            {
                System.out.println("Inhalt des Terminkalenders");
                System.out.println("----------------------------------------------------------------------");
                /**
                *Hier erfolgt die Ausgabe und zwar nach der reihenfolge das dernächste Termin als erstes angegeben
                *werden soll                
                */
              // System.out.println(Calendar.getBeschreibung());
                zeigeTermin(String beschreibung) ;
                System.out.println();

            }
          if ((eingabe != 1) && (eingabe != 2) && (eingabe != 3))  
            {
                System.out.println("Falsche Eingabe - Bitte neu wählen im Menue");
            }
      }
     System.out.println("Die Anwendung wurde beendet.");
    
     
 }
        public void zeigeTermin(String beschreibung) 
     {
           System.out.println(Terminplan.getBeschreibung());
         // System.out.println(Date.size());
        //System.out.println(Date.getBeschreibung(Beschreibung));
        }
      
/**
* public static String getDateAsString(Date date) 
*              {        
*                  SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
*                  return format.format(date);
*              } 
*/
}
Java:
import ConsoleInOut.*;
import java.util.*;
import java.text.*;
import java.util.ArrayList;
import java.util.Iterator;

public class Terminplan
{

private ArrayList Terminplan;
private int year, month, date;
 //Attribute
 public String beschreibung;
 //private Calendar date;
 //Konstruktor
 public Terminplan(int year, int month, int date, String beschreibung)
 {
     // List Date = new ArrayList<Calendar>();
      this.year=year;
      this.month= month;
      this.date=date;
      this.beschreibung = beschreibung;
 }
 


 public String getBeschreibung()
 {
  return beschreibung;
 }
 public Calendar getDate(Calendar Date)
 {
    return Date;
    }
 
 //Schreibende Methoden

 public void setBeschreibung(String Beschreibung)
 {
  beschreibung = Beschreibung;
 }
  public void setDate(Calendar Date, int year, int month, int date)
 
         { 
             this.date = date; 
             this.month = month;
             this.year = year;
             //Date.add( Calendar.YEAR, year );
             //Date.add( Calendar.MONTH, month );
             //Date.add( Calendar.DATE, date );
         }
        }
 
Zuletzt bearbeitet von einem Moderator:
Ich bekomme in der Klasse TerminplanUI beim Compilieren einen Fehler ')' expected. Ich kann mit der Fehlermeldung nicht so arg viel anfenagen. Bitte um Unterstützung?

Du kannst aber schon englisch oder kurz im Wörterbuch nach expected nachschlagen?

Was wird wohl ')' expected bedeuten?
hmm...man übersetze expected mit erwartet....ok ')' erwartet
Schlussfolgerung....hmm...da könnte ne Klammer fehlen oder eine zuviel da

P.S.: Warum scheinst du in deinem Quellcode meine vorherigen Tips völlig ignoriert zu haben?
 
Um nochmal auf das 2te Posting hier zurückzukommen.
Was macht diese Funktion?
Code:
public Calendar getDate(Calendar Date)
{
    return Date;
}

Und guck dir nochmal diesen Methodenaufruf an.
Code:
zeigeTermin(String beschreibung);

edit:
da sind mir noch ein ganzer Haufen andere Dinge aufgefallen. Am besten du überlegst dir erst mal grundlegend was Du genau tun willst.

Du willst mehrere Termine in einer Liste speichern und auch wieder anzeigen.
Dafür musst Du dir überlegen wie Du einen Termin abspeicherst. Du könntest zum Beispiel eine Klasse Termin erstellen, in der du die Variablen Jahr, Monat, Tag und Beschreibung abspeicherst.
Jetzt hast du aber nicht nur einen Termin, sondern mehrere. Bedeutet du brauchst eine Möglichkeit mehrere Termine zu speichern. Dafür könntest du dir eine Klasse Terminplan mit einem Vector<Termin> an. In diesem Vector speicherst du dir dann die einzelnen Termine ab. Die Sortierung der Termine würde ich an deiner Stelle erst mal weglassen.

In deinem Hauptprogramm erstellst du dir eine Variable der Klasse Terminplan.
Möchtest du einen Termin hinzufügen, erstellst du dir einen Termin, befüllst ihn mit den Eingaben (hierfür verwendest du die set-Methoden der Klasse) und fügst den Termin der Terminplan-Variable hinzu, sprich
Code:
//Termin erstellen
Termin termin = new Termin();

//Befüllen mit den Daten. Zum Beispiel das Jahr:
System.out.println("Jahr: ");
year = Console.console_in_int();

//den Termin zum Terminplan hinzufügen
terminplanVariable.addTermin(termin);
 
Zuletzt bearbeitet von einem Moderator:
Zurück