# Frage wegen Wörterbuch Programmierung



## Info_GK (14. Okt 2008)

Wir sind 12.Klässler eines Gymnasiums und haben als Aufgabe gestellt bekommen im Informatik Leistungskurs ein Wörterbuch in Java zu programmieren indem wir externe Text Files importieren.
Das ist der Code den wir bis jetzt haben und wir kriegen eine Fehlermeldung der anscheinend sich durch das gesammte Programm zieht, da wir überall etwas ändern können und es die Fehlermeldung nicht betrifft obwohl wir sehen können was falsch ist....
Wenn ihr Vorschläge oder Hilfen habt bitte seid so lieb und sagt sie uns damit wir unsere Klausurersatzleistung erfolgreich beenden können.

Vielen lieben Dank im Voraus


import java.io.*;
import java.awt.*;
import java.awt.event.*;

class neuwbuch extends Frame
implements ActionListener
{
	public static void main(String args[])
	throws IOException

	public neuwbuch()

	{
		Button bt1 = new Button("Uebersetzen");
    	TextField tf1 = new TextField("");
    	Label la1 = new Label("");
    	Button bt2 = new Button("Translate");
		TextField tf2 = new TextField("");
    	Label la2 = new Label("");
    	Button bt3 = new Button("Beenden/Exit");

    	BufferedReader fr;
		String str1 = new String ("deutsch.txt");
		String str2 = new String ("englisch.txt");
		String str3 = new String ();

  		setLayout(null);
  		setBackground(Color.green);

  		add(bt1);
		add(tf1);
    	add(la1);
		add(bt2);
		add(tf2);
    	add(la2);
    	add(bt3);

    	bt1.setBounds(135,300,80,20);
    	tf1.setBounds(100,40,150,100);
    	la1.setBounds(100,160,150,80);
    	bt2.setBounds(335,300,80,20);
    	tf2.setBounds(300,40,150,100);
    	la2.setBounds(300,160,150,80);
    	bt3.setBounds(500,560,80,20);

    	bt1.addActionListener(this);
    	tf1.addActionListener(this);
    	bt2.addActionListener(this);
    	tf2.addActionListener(this);
    	bt3.addActionListener(this);
    	str1.addActionListener(this);
    	str2.addActionListener(this);
    	str3.addActionListener(this);

  }

  public void actionPerformed (ActionEvent e)

  {
				fr=new BufferedReader (new FileReader("deutsch.txt"));
				str1 = fr.readLine();

				fr=new BufferedReader (new FileReader("englisch.txt"));
				str2 = fr.readLine();


		{
			if(e.getSource().equals(str1))
			{

			  System.out.println(str2);
			}

			else

			{

		      System.out.println("Wort nicht vorhanden!");

			}

		 }

  	 if(e.getSource().equals(bt3));
  	  {

		  System.exit(0);

	  }

   }

  public static void main (String args[])
  {
	  neuwbuch a = new neuwbuch();

	  a.setSize(600,600);

	  a.setTitle("Woerterbuch");

	  a.setVisible(true);

   }

}

Fehlermeldung: 
H:\neuwbuch.java:9: ';' expected
	throws IOException
	                  ^


----------



## SlaterB (14. Okt 2008)

> public static void main(String args[]) 
> throws IOException 
>
> public neuwbuch() 
> { 

ist kein sinnvoller Code


genau wie in deutscher Sprache
"Ich gehe zu
Mir ist warm."
kein sinnvoller Text ist.

bevor eine zweite Methode anfängt, muss doch die erste beendet werden


----------



## AmunRa (14. Okt 2008)

```
import java.io.*; 
import java.awt.*; 
import java.awt.event.*; 

class neuwbuch extends Frame 
implements ActionListener 
{
  public static void main (String args[]) 
  { 
      neuwbuch a = new neuwbuch(); 

      a.setSize(600,600); 

     a.setTitle("Woerterbuch"); 

     a.setVisible(true); 

  }


   neuwbuch(){.......
```


So müsste es aussehen


edit:
 und die zweite main Methode löschen


----------



## The_S (14. Okt 2008)

Lösch die Zeile 9.

Und es nächste mal bitte code-Tags verwenden. Und Klassennamen schreibt man groß  .


----------



## Jonnsn (14. Okt 2008)

kann mich ja irren weil unformatiert - aber da sind doch auch 2 main methoden in einer Klasse ?!


----------



## AmunRa (14. Okt 2008)

Du hast recht das da sind wirklich zwei


----------



## Oli (14. Okt 2008)

Es steht doch eigentlich schon alles in der Fehlermeldung drin. Er erwartet ein Semikolon in der Zeile 9.

public static void main(String args[]) throws IOException könnt ihr getrost weglassen und das throws IO.. an die eigentliche main weiter unten hängen.

Dann sollte das ganze funktionieren.

Grüße Oli


----------



## Info_GK (14. Okt 2008)

also wir haben jetzt noch ein paar kleine veränderung vorgenommen, die ihr uns lieberweise gesagt habt, eingeschlossen und kommen mit diesem text raus, der aber nach wie vor nicht stimmt.....


```
import java.io.*;
import java.awt.*;
import java.awt.event.*;

class neuwbuch extends Frame implements ActionListener
{
	  public static void main (String args[]) throws IOException
	  {
		  neuwbuch a = new neuwbuch();

		  a.setSize(600,600);

		  a.setTitle("Woerterbuch");

		  a.setVisible(true);

   	  }


	public neuwbuch()

	{
		Button bt1 = new Button("Uebersetzen");
    	TextField tf1 = new TextField("");
    	Label la1 = new Label("");
    	Button bt2 = new Button("Translate");
		TextField tf2 = new TextField("");
    	Label la2 = new Label("");
    	Button bt3 = new Button("Beenden/Exit");

    	BufferedReader fr;
		String str1 = new String ("deutsch.txt");
		String str2 = new String ("englisch.txt");
		String str3 = new String ();

  		setLayout(null);
  		setBackground(Color.green);

  		add(bt1);
		add(tf1);
    	add(la1);
		add(bt2);
		add(tf2);
    	add(la2);
    	add(bt3);

    	bt1.setBounds(135,300,80,20);
    	tf1.setBounds(100,40,150,100);
    	la1.setBounds(100,160,150,80);
    	bt2.setBounds(335,300,80,20);
    	tf2.setBounds(300,40,150,100);
    	la2.setBounds(300,160,150,80);
    	bt3.setBounds(500,560,80,20);

    	bt1.addActionListener(this);
    	tf1.addActionListener(this);
    	bt2.addActionListener(this);
    	tf2.addActionListener(this);
    	bt3.addActionListener(this);

  }

  public void actionPerformed (ActionEvent e)

  {
				fr = new BufferedReader (new FileReader("deutsch.txt"));
				str1 = fr.readLine();

				fr = new BufferedReader (new FileReader("englisch.txt"));
				str2 = fr.readLine();


		{
			str3 = tf1.getText();

			if(str3.equals(str1))
			{

			  System.out.println(str2);
			}

			else

			{

		      System.out.println("Wort nicht vorhanden!");

			}

		 }

  	 if(e.getSource().equals(bt3));
  	  {

		  System.exit(0);

	  }

   }

}
```


----------



## till123 (14. Okt 2008)

Hallo,

in eurem Quelltext fehlen noch einige Typangaben bei den Deklarationen:
z.B.: 

```
fr = new BufferedReader (new FileReader("deutsch.txt"));
str1 = fr.readLine();
fr = new BufferedReader (new FileReader("englisch.txt"));
str2 = fr.readLine();
```

Vor fr, str1,str2 muss noch der Typ angegeben werden.


Was soll genau bt3 sein?

```
if(e.getSource().equals(bt3));
```

Ich würde einfach die Methode "actionPerformed" noch mit in die Klasse "public neuwbuch() " packen. Dann werden die Variablen wieder erkannt.


----------



## Oli (14. Okt 2008)

Hallo,

es wäre natürlich immer sehr hilfreich, wenn die Fehlermeldungen die der Compiler ausspuckt mit gepostet werden würde. Das macht die Fehlerbehebung entsprechend einfacher.

Grüße Oli


----------



## Oli (14. Okt 2008)

```
import java.io.*;
import java.awt.*;
import java.awt.event.*;

class neuwbuch extends Frame implements ActionListener {
	private Button bt1;
	private Button bt2;
	private Button bt3;

	private TextField tf1;

	public static void main(String args[]) throws IOException {
		neuwbuch a = new neuwbuch();

		a.setSize(600, 600);

		a.setTitle("Woerterbuch");

		a.setVisible(true);

	}

	public neuwbuch()

	{
		bt1 = new Button("Uebersetzen");
		tf1 = new TextField("");
		Label la1 = new Label("");
		bt2 = new Button("Translate");
		TextField tf2 = new TextField("");
		la2 = new Label("");
		Button bt3 = new Button("Beenden/Exit");

		BufferedReader fr;
		String str1 = new String("deutsch.txt");
		String str2 = new String("englisch.txt");
		String str3 = new String();

		setLayout(null);
		setBackground(Color.green);

		add(bt1);
		add(tf1);
		add(la1);
		add(bt2);
		add(tf2);
		add(la2);
		add(bt3);

		bt1.setBounds(135, 300, 80, 20);
		tf1.setBounds(100, 40, 150, 100);
		la1.setBounds(100, 160, 150, 80);
		bt2.setBounds(335, 300, 80, 20);
		tf2.setBounds(300, 40, 150, 100);
		la2.setBounds(300, 160, 150, 80);
		bt3.setBounds(500, 560, 80, 20);

		bt1.addActionListener(this);
		tf1.addActionListener(this);
		bt2.addActionListener(this);
		tf2.addActionListener(this);
		bt3.addActionListener(this);

	}

	public void actionPerformed(ActionEvent e)

	{
		try {
			BufferedReader frD = new BufferedReader(new FileReader("deutsch.txt"));
			String str1 = frD.readLine();

			BufferedReader frE = new BufferedReader(new FileReader("englisch.txt"));
			String str2 = frE.readLine();

			{
				String str3 = tf1.getText();

				if (str3.equals(str1)) {
					System.out.println(str2);
				}
				else {
					System.out.println("Wort nicht vorhanden!");
				}

			}

			if (e.getSource().equals(bt3)) {
				System.exit(0);
			}

		}
		catch (Exception ex) {
			ex.printStackTrace();
		}

	}

}
```

Versucht das mal. (Keine Garantie auf Richtigkeit)

Grüße Oli


----------



## Oli (14. Okt 2008)

@till

Die ActionPerformed befindet sich in der Klasse neuwbuch. 
Das Problem ist, dass hier auf einen Button referenziert werden soll, der nur im Konstruktor und nicht in der Klasse bekannt ist. Das wird schlecht funktionieren.

Es würde auch meiner Meinung gar nicht schaden, wenn sich der GK mal geschlossen ein Buch schnappt und wenigstens die Grundlagen der Programmierung nachzulesen (Klassenvariablen, private, öffentliche usw...)

Grüße Oli


----------



## Zed (14. Okt 2008)

Wenn man so nen code abgibt dann hat man schon verloren auch wenn er geht. 

Vielleicht erstmal überlegen wie das ganze aufgebaut sein soll.


----------



## Oli (14. Okt 2008)

Schön ist das nicht, aber es ist ja nicht meine Aufgabe den Code auch noch sinnvoll zu strukturieren.
Das sollte sich der GK12 dann nochmals anschauen und ggf. vernünftige Design-Patterns verwenden.


----------

