# HashTables



## X-Treme (20. Nov 2006)

Hi Leute, 

hätte vllt jemand ein Beispiel für die Anwendung von Hash Tabellen?

MfG

X-Treme


----------



## SnooP (20. Nov 2006)

Telefonverzeichnisse... - alles was Daten anhand eines Schlüssels (key) abspeichert, so dass jeweils Paare mit Wert&Schlüssel in einer Zeile einer Hashtabelle gespeichert werden.

Das Speichern der Werte - also der Speicherort (welche Zeile der Tabelle) ist dabei nicht linear, will sagen nicht 1. dann 2. dann 3. Zeile, sondern abhängig von der hash-funktion und dem hashwert des jeweils zu speichernden keys... - aber dazu gibt's genügend Informationen auch im netz und ist für den Einsatz der Hashtabellen auch nicht weiter relevant... - wichtig zu wissen ist, dass es ne recht schnelle Speichermöglichkeit darstellt.

P.S. änder doch bitte mal deine Sig -die zieht bei mir das layout ziemlich auseinander...


----------



## X-Treme (20. Nov 2006)

Jo THX! Ich habe ein Prog geschrieben, dass eine Textdatei durchsucht und feststellt, ob der Text darin Englisch oder Deutsch ist! Ich will es jetzt aber mit Hashtables verändern! Ich habe es vorher mit equals gemacht! Hier der Code:


```
import java.io.*;
import java.util.*;


public class Sprachen
{
	private static int englisch = 0;
	private static int deutsch = 0;
  
	private static void istDeutsch(String satz) 
	{
	String[] temp2 = satz.split(" ");
	for(int i =0; i<temp2.length; i++)
	{
		String wort2 = temp2[i];
		if(wort2.equals("der") || wort2.equals("die") || 
                wort2.equals("und") || wort2.equals("in") || 
                wort2.equals("den") || wort2.equals("von") || 
                wort2.equals("das") || wort2.equals("mit") || 
                 wort2.equals("zu") || wort2.equals("sich") || 
                   wort2.equals("dies") || wort2.equals("ein") ||
                  wort2.equals("ich") || wort2.equals("Ich"))
		{
			deutsch++;
		}
	}
}      
	private static void istEnglisch(String satz)
	{
		String[] temp = satz.split(" ");
		for(int i =0; i<temp.length; i++)
		{
			String wort = temp[i];
			if(wort.equals("is") || wort.equals("a") || 
                        wort.equals("I") || wort.equals("of") || 
                         wort.equals("to") || wort.equals("and") || 
                          wort.equals("for") || wort.equals("the") || wort.equals("that") 
                       || wort.equals("on") || wort.equals("are"))
			{
				englisch++;
			}
		}
	}
	public static void main (String[] args) 
	{
		try 
	{                       
		BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
		String line;
		while( (line = stdin.readLine()) != null)  
		{
			istDeutsch(line);
			istEnglisch(line);
		}
		} 
			catch(IOException ex) 
			{
				System.out.println(ex);
			}
			if(englisch > deutsch) 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
			} 
			else if(deutsch > englisch) 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
			} 
			else 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
			}
		} 
	}
```

So funktioniert es wohl, aber ich will die Zeit verkürzen die das Prog braucht um die Datei zu Überprüfen! Also hab ich mir gedacht das mit hashtables zu machen!

also so:


```
HashSet english=new HashSet();
english.add("the");
english.add("a");
if(english.contains(word)) 
englisch++;
```

usw. aber ich versteh nicht ganz, was ich von meiner alten Methode weglassen muss und was nicht!?!?!

MfG 

X-Treme


----------



## Beni (20. Nov 2006)

```
Set english = ... // wird irgendwo gefüllt
if( english.contains( word )){
  // das word war in der Menge "english".
}
```


----------



## X-Treme (20. Nov 2006)

Ich hab jetzt mal die istDeutsch Methode mit HashSet verändert!


```
private static void istDeutsch(String satz) 
	{
	String[] temp2 = satz.split(" ");
	for(int i =0; i<temp2.length; i++)
	{
		String wort2 = temp2[i];
		HashSet german = new HashSet();
		german.add("der"); 
		german.add("die");
		german.add("das");
		german.add("ist");
		german.add("war");
		german.add("dies");
		german.add("ein");
		german.add("Ich");
		german.add("von");
		german.add("den");
		german.add("für");
		german.add("in");
		german.add("dem");
		german.add("mit");
		german.add("sich");
		if(german.contains( wort2 )
		{
			deutsch++;
		}
	}
```

Was ist jetzt daran Falsch?


----------



## X-Treme (20. Nov 2006)

Der Zeigt mir die ganze Zeit Ilegal Start of Expression an! Aber ich weiß nicht wo!


----------



## SlaterB (20. Nov 2006)

'der' muss dir doch eine Zeile nennen, ansonsten würde ich mir schleunigst einen 'anderen' suchen

if(german.contains( wort2 ) 
{

da fehlt wohl eine schließende Klammer,

wenn du übrigens bei jedem Vergleich die Hashmap neu erstellst und neu füllst mit allen Wörtern,
dann ist das noch langsamer als das if,

die Map nur EINMAL erzeugen und füllen, und dann wiederverwenden,

und ändere doch mal deine Codeblöcke aus früheren Posts, 
bei den langen Zeilen Zeilenumbrüche!,
so kann man ja nix mehr lesen


----------



## X-Treme (20. Nov 2006)

> die Map nur EINMAL erzeugen und füllen, und dann wiederverwenden,



Wo füll ich die den mehrmals? Ich sag "Ihm" doch nur HashSet und was darein kommt! und dann bleibt das doch drin oder wie ist das?



> 'der' muss dir doch eine Zeile nennen, ansonsten würde ich mir schleunigst einen 'anderen' suchen



Woher kriegt er denn die Zeile?


----------



## AlArenal (20. Nov 2006)

X-Treme hat gesagt.:
			
		

> Wo füll ich die den mehrmals? Ich sag "Ihm" doch nur HashSet und was darein kommt! und dann bleibt das doch drin oder wie ist das?



Ja, das bleibt drin bis zum nächsten Schleifendurchlauf, weil du dann wieder eine neue Instanz generierst, sie neu befüllst und das Murmeltier aufs Neue grüßt...


----------



## X-Treme (20. Nov 2006)

Und wie müsste ich das verändern damit es das nicht mehr tut?


----------



## AlArenal (20. Nov 2006)

Die Zeile HashSet german = new HashSet(); vor die Schleifen verschieben.


----------



## SlaterB (20. Nov 2006)

oder gleich statisch:


```
private static Map german..

private static void istDeutsch(String satz)
   {

  if (german== null) {
    fill german..
  }

   String[] temp2 = satz.split(" ");
   for(int i =0; i<temp2.length; i++)
   {
      String wort2 = temp2[i];
      if(german.contains( wort2 ))
      {
         deutsch++;
      }
   }
```

> Woher kriegt er denn die Zeile?
ein normaler Compiler sagt
'error: .... at line 17'

wenn nirgendwo die Zeile angegeben ist, dann kann man nicht mehr viel machen,
wer sagt dir das denn?,
benutzt du javac Klasse.java in der Konsole oder welches Programm?


----------



## DocRandom (20. Nov 2006)

Hi X-Treme!

Nun, da Java ja eine OO - Sprache ist, wollen wir mal Dein Problem auch Objekt orientiert lösen! 
Wie ich nun feststellen mußte, produzierst Du unnötigen Code.
Ein *HashSet* zu verwenden war/ist jedoch schon mal ein guter Ansatz.

Unnötig deshalb, weil Du gleichen Code nicht in einer Klasse kapselst
So, hier mal ein Vorschlag meinerseits:

*Words.java*

```
import java.util.*;

public class Words {
	// das HashSet-Objekt
	private HashSet woerter;
	// die Zaehlervariable
	private int matchcount;
	
	// Konstruktor
	public Words (String[] wort) {
		// Klasse wird neu erstellt ergo Zaehler auf 0
		matchcount = 0;
		// die übergebenen Woerter ab ins HashSet
		woerter = new HashSet();
		for ( int i = 0; i < wort.length; i++) {
			woerter.add(wort[i]);
		}
	}
	/*
	 * Vergleicht den Inhalt von Satz mit dem HashSet
	 */
	public void checkMatched(String satz) {
		String[] tmp = satz.split(" ");
		for ( int i = 0; i < tmp.length; i++) {
			if (woerter.contains(tmp[i]))
				matchcount++;
		}
	}
	/*
	 * gibt die Treffer aus
	 */
	public int getMatchCount() {
		return matchcount;
	}
}
```
..jetzt brauchst Du in Deiner Main nur noch für jede Sprache ein *Words-Objekt* erstellen.
.z.B.:

```
...
Words english = new Words("is", "a","of", "to","and","for","the","that","on","are");
Words german = new Words("der","die","und","in","den","von","das","mit");
....
```

..der Code denke ich, ist selbsterklärend!

mfg
DocRandom


----------



## X-Treme (21. Nov 2006)

Erstmal danke DOC probier das sofort aus!^^


> wenn nirgendwo die Zeile angegeben ist, dann kann man nicht mehr viel machen,
> wer sagt dir das denn?,
> benutzt du javac Klasse.java in der Konsole oder welches Programm?



Ja ich benutze die Konsole unter Linux mit Javac Klasse.java

Thx

X-Treme


----------



## X-Treme (21. Nov 2006)

Kleine Frage, wenn ich die Methoden jetzt einbinde was wird alles dadurch überflüssig? Also den Counter deutsch und englisch gibts nicht mehr und weiter? oder besser gesagt, was muss in der Mainfunktion weggelassen werden? Hey DOC du hast doch in deiner nur einen Zaehler! Und die Methode zaehlt auch nur ein HashSet oder?

MfG

X-Treme


----------



## X-Treme (21. Nov 2006)

Also im Moment sieht meine Main so aus:

```
public static void main (String[] args) 
{
	try 
{                       
		BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
		String line;
		while( (line = stdin.readLine()) != null)  
		{
			istDeutsch(line);
			istEnglisch(line);
			Words english = new Words("is", "a","of", "to","and","for","the","that","on","are");
			Words german = new Words("der","die","und","in","den","von","das","mit"); 
		}
		} 
			catch(IOException ex) 
			{
				System.out.println(ex);
			}
			if(englisch > deutsch) 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
			} 
			else if(deutsch > englisch) 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
			} 
			else 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
			}
		} 
	}
```

Hier is viel überflüssig, dass weiß, aber ich weiß nicht was genau^^


----------



## X-Treme (21. Nov 2006)

Ich weiß nur, dass es die Methoden istDeutsch & istEnglisch nicht mehr gibt! Und das die Counter nicht mehr da sind!


----------



## X-Treme (21. Nov 2006)

Wenn ichs so mach spuckt der Compiler mir noch 2 Fehler aus!


```
public static void main (String[] args) 
{
	try 
{                       
		BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
		String line;
		while( (line = stdin.readLine()) != null)  
		{
			Words english = new Words("is", "a","of", "to","and","for","the","that","on","are");
			Words german = new Words("der","die","und","in","den","von","das","mit"); 
		}
		} 
		catch(IOException ex) 
		{
			System.out.println(ex);
		}
		if(Words english) 
		{
			System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
		} 
		else if(Words german) 
		{
			System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
		} 
		else 
		{
			System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
		}
	}
```

p.s. Sorry für die vielen Posts^^ is noch so früh...^^


----------



## SnooP (21. Nov 2006)

Welche Fehler... meine Glaskugel ist kaputt... immer noch!


----------



## X-Treme (21. Nov 2006)

lol Die hier:

Words.java:50: ')' expected
                if(Words english > Words german)
                         ^
Words.java:62: illegal start of expression
        }
        ^
2 errors

Das kann aber nicht! Wo sollen denn da noch Klammern hin?


----------



## Murray (21. Nov 2006)

Wenn du DocRandoms Ansatz verwenden willst, musst du auch die Methoden der Kasse Word aufrufen; das könnte wohl in etwa so aussehen:

```
public static void main (String[] args) {
   try {

      Words english = new Words("is", "a","of", "to","and","for","the","that","on","are");
      Words german = new Words("der","die","und","in","den","von","das","mit");
                       
      BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
      String line;
      while( (line = stdin.readLine()) != null) {
        english.checkMatched( line);
        german.checkMatched( line);
      }
  } catch(IOException ex) {
    System.out.println(ex);
  }
  if( english.getMatchCount() > german.getMatchCount()) {
         System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
  } else if( german.getMatchCount() > english.getMatchCount()) {
         System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
  } else {
         System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
  }
}
```


----------



## SlaterB (21. Nov 2006)

zunächst mal erzeugst du diese Objekte immer noch in der while-Schleife,
also mehrmals, das solltest du dir doch als erstes abgewöhnen,
einmal erzeugen und wiederverwenden!

und dann macht der Versuch zu programmieren, doch keinen Sinn,
wenn man nicht nachdenkt?

die eingelesen Zeilen verwendest du nirgendwo!

"if(englisch > deutsch)" bzw. "if(Words english) "
was soll die Bedeutung dieser Zeilen sein?
die machen doch keinen Sinn, du musst dir doch erstmal gedanklich überlegen, 
was zu tun ist, und dann erst umsetzen,

----------

wenn du nicht weißt, wie man die neue Klasse einsetzt, 
dann frage lieber direkt, statt sowas zu posten,
die Bedienung dieser Klassen sieht in etwa so aus:
(ungetestet, können noch Fehler drin sein)


```
public static void main (String[] args)
{
         Words english = new Words("is", "a","of", "to","and","for","the","that","on","are");
         Words german = new Words("der","die","und","in","den","von","das","mit");

   try
{                       
      BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
      String line;
      while( (line = stdin.readLine()) != null) 
      {
        english.checkMatched(line);
        german.checkMatched(line);
      }
      }
      catch(IOException ex)
      {
         System.out.println(ex);
      }
      int numberGerman = german.getMatchCount();
      int numberEnglish = english.getMatchCount();


      if(numberGerman > numberEnglish )
      {
         System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
      }
      else if(numberEnglish > numberGerman)
      {
         System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
      }
      else
      {
         System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
      }
   }
```


----------



## X-Treme (21. Nov 2006)

Was hat dieser Fehler zu bedeuten?
Words.java:37: cannot find symbol
symbol  : constructor Words(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.
String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)
location: class Words
        Words english = new Words("is", "a","of", "to","and","for","the","that","on","are");

p.s. GANZ NORMALE FRAGE (HAB KEIN BUCH MIT FEHLER CODES & AUS DEM WIRWAR DA, ERKENNE ICH NUR DAS ER IRGENDWAS NET FINDET, WIE MAN UNSCHWER AN CANNOT FIND SYMBOL ERKENNEN KANN)

MfG

X-Treme


----------



## SlaterB (21. Nov 2006)

der Konstruktor verlangt ein String-Array mit allen Wörtern,
nicht die Wörter direkt als Parameter.. 

wie man ein String-Array anlegt weißt du hoffentlich?

falls du Java 1.5 benutzt geht evtl, folgender Konstruktor:
public Words (String.. wort) {  // so wie es da steht mit zwei Punkten
 // Rest so wie bisher
}
zusammen mit deinem bisherigen Aufruf


----------



## X-Treme (21. Nov 2006)

> wenn du nicht weißt, wie man die neue Klasse einsetzt,
> dann frage lieber direkt, statt sowas zu posten,



Wenn man das tut heißt es doch eh nur wir machen keine Hausaufgaben! Und das is ja auch nicht sinn und zweck der Sache! Ich will ja Java lernen! Ich hab schonmal gesagt, dass ich nicht der absolute Profi bin! Ich frag halt nach in dem Glauben, dass hier Kompetentere Leute posten und einem mit Hilfe Stellungen dienen. Is ja net so, dass ich nicht Nachdenke oder so, aber wenn ich das alles nicht kenn (Und z.B. bei Gailer-Net oder dpunkt.de nicht damit weiter komm) dann hab ich das Gefühl, dass die Fragen hier richtig plaziert sind!

MfG

x-Treme

p.s. das war jetzt ein bischen Off-Topic, aber naja


----------



## X-Treme (21. Nov 2006)

Das ist ein String-Array oder?


```
String[] english = new String[]{"a", "is", "are", "am", "this", "I"};
```


----------



## SlaterB (21. Nov 2006)

naja, hier wurde ja schon sehr viel geschrieben, gar eine eigene Word-Klasse, dann gehört auch ein wenig dazu diese zu erklären,

ein Post wie 'ich weiß nicht wie man diese Klasse benutzt' hätte dann vielleicht wirklich nicht direkt zu Code geführt,
wäre aber eine viel bessere Diskussionsgrundlage,
z.B. könnte man dann in Textform diskutieren was die Klasse überhaupt an Operationen bietet, 
in welcher Reihenfolge man die wohl benutzen muss,

schau dir die Klasse doch an:
ein Konstruktor,
eine Operation um Zeilen zu analysieren
und eine Operation um Ergebnisse auszulesen,

das ist ja fast schon zu simpel um überhaupt über einen Ablauf nachzudenken,
mit einer Frage danach hätte man das trotzdem tun können,
bzw. vielleicht wäre dir schon beim Formulieren der Frage/ 
beim Formulieren DEINER PROBLEME MIT DEM UMGANG MIT DER KLASSE was eingefallen,

aber so wie du deinen Code postest sieht es so aus als wenn du gar nicht nachdenkst 
sondern nur wahllos den Klassennamen irgendwo einfügst,
das ist schlecht


----------



## X-Treme (21. Nov 2006)

Auch noch mal mein Code, damit Ihr nachvollziehen könnt was ich da mache^^


```
import java.util.*;
import java.io.*;

public class Words 
{
	private HashSet woerter;
	private int matchcount;
	
	public Words (String[] wort) 
	{
		matchcount = 0;
		woerter = new HashSet();
		for ( int i = 0; i < wort.length; i++) 
		{
			woerter.add(wort[i]);
		}
}
public void checkMatched(String satz) 
{
	String[] tmp = satz.split(" ");
	for ( int i = 0; i < tmp.length; i++) 
	{
		if (woerter.contains(tmp[i]))
		{
			matchcount++;
		}
	}
}
public int getMatchCount() 
{
	return matchcount;
}
public static void main (String[] args) 
{
try 
{
	String[] english = new String[]{"a", "is", "are", "am", "this", "I"};
	String[] german = new String[]{"der", "die", "das", "ist", "dies", "Ich", "einem", "eine", "mit", "für"};
                       
	BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
	String line;
	while( (line = stdin.readLine()) != null) 
	{
		english.checkMatched( line);
		german.checkMatched( line);
	}
	}
		catch(IOException ex) 
	{
		System.out.println(ex);
	}
		if( english.getMatchCount() > german.getMatchCount()) 
	{
		System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
	} 
		else if( german.getMatchCount() > english.getMatchCount()) 
	{
		System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
	} 
	else 
		{
			System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
		}
	} 
}
```


----------



## SlaterB (21. Nov 2006)

String[] englishArray = new String[]{"a", "is", "are", "am", "this", "I"};
   String[] germanArray = new String[]{"der", "die", "das", "ist", "dies", "Ich", "einem", "eine", "mit", "für"};


 Words english = new Words(englishArray);
         Words german = new Words(germanArray );

siehe auch mein Post kurz vor deinem falls beim Schreiben übersehen


----------



## X-Treme (21. Nov 2006)

> siehe auch mein Post kurz vor deinem falls beim Schreiben übersehen



Ja sorry sonst hät ich den Code jetzt nicht gepostet^^

Aber Danke das du drauf eingegangen bist! Gibt ja nicht viele solcher Menschen!


----------



## X-Treme (21. Nov 2006)

Ich habe jetzt noch ein Problem mit der Bildschirmausgabe! (Auf Textebene bitte^^) Also bei der Ausgabe (z.B. english.getMatchcount())!  Ich würde wohl gerne wissen ob man english & german vllt noch irgendwo deklarieren oder intialsieren muss. So wie ich das verstanden hab nimmt der Compiler nähmlich english und german als varable und kann die deßhalb nicht finden!

Ohne irgendwelche Fehlermeldungen zu posten^^ Ich hab auf jeden Fall noch 4 Fehler und eine Warnung


----------



## SlaterB (21. Nov 2006)

wenn dir der grundsätzliche Vorgang 'Zahl aus Klasse auslesen und weiterverwenden' klar ist
(ein solcher Aufruf fehlte früher)

dann machen Code und Fehlermeldungen wieder mehr Sinn 

ich hatte ja schonmal irgendwo

int numberGerman = german.getMatchCount();
int numberEnglish = english.getMatchCount();

vorgeschlagen, mit diesen ints kannst du alles mögliche machen,
was da nun dein Problem ist wird noch nicht klar

> So wie ich das verstanden hab nimmt der Compiler nähmlich 
> english und german als varable und kann die deßhalb nicht finden! 
irgendwo müssen die Word-Objekte ja sein um getMatchCount() aufzurufen,
wenn die nicht da sind dann hast du ein ganz anderes Problem


----------



## Leroy42a (21. Nov 2006)

X-Treme hat gesagt.:
			
		

> Ohne irgendwelche Fehlermeldungen zu posten^^ Ich hab auf jeden Fall noch 4 Fehler und eine Warnung



Ich denke es macht doch mehr Sinn wenn du dein ganzes Programm
nochmal postest, wir können ja nicht wissen, was du bzgl. deines letzten
Postings verändert hast.


----------



## X-Treme (21. Nov 2006)

> ich hatte ja schonmal irgendwo
> 
> int numberGerman = german.getMatchCount();
> int numberEnglish = english.getMatchCount();
> ...



So weit ich weiß nicht, aber kann mich irren (hab jetzt nicht nachgekuckt)
Mein Problem ist einfach Das, dass (selbst wenn ich die Variablen einsetzte (von dir) er mir immer noch die selben Fehlermeldungen ausspuck!

desweiteren an Lerroy ich hab noch nichts weiter verändert bis auf das ich die Variablen eingefügt hab! Also kannst du den letzten Code Post ruhig nehmen um irgendwas zu erklären (falls du das wolltest!)

MfG

X-Treme


----------



## SlaterB (21. Nov 2006)

in dem zuletzt von dir geposteten Code fehleten die Words ja vollständig,
darauf hatte ich schon geantwortet:

String[] englishArray = new String[]{"a", "is", "are", "am", "this", "I"};
String[] germanArray = new String[]{"der", "die", "das", "ist", "dies", "Ich", "einem", "eine", "mit", "für"};


Words english = new Words(englishArray);
Words german = new Words(germanArray );

gut du sagst du hast die schon eingefügt, dann zeig doch mal wirklich den Code,
mehr kann man ungesehen nicht raten


----------



## X-Treme (21. Nov 2006)

Weiß aber nicht ob das so richtig ist! für mich wär das so logisch (Aber auch ohne Variblen die selben Fehler


```
import java.util.*;
import java.io.*;

public class Words 
{
	private HashSet woerter;
	private int matchcount;
	
	public Words (String[] wort) 
	{
		matchcount = 0;
		woerter = new HashSet();
		for ( int i = 0; i < wort.length; i++) 
		{
			woerter.add(wort[i]);
		}
}
public void checkMatched(String satz) 
{
	String[] tmp = satz.split(" ");
	for ( int i = 0; i < tmp.length; i++) 
	{
		if (woerter.contains(tmp[i]))
		{
			matchcount++;
		}
	}
}
public int getMatchCount() 
{
	return matchcount;
}
public static void main (String[] args) 
{
try 
{
	String[] englishArray = new String[]{"a", "is", "are", "am", "this", "I"};
	String[] germanArray = new String[]{"der", "die", "das", "ist", "dies", "Ich", "einem", "eine", "mit", "für"};

	int numberGerman = german.getMatchCount();
	int numberEnglish = english.getMatchCount();                   
	Words english = new Words(englishArray);
	Words german = new Words(germanArray ); 

	BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
	String line;
	while( (line = stdin.readLine()) != null) 
	{
		english.checkMatched( line);
		german.checkMatched( line);
	}
	}
		catch(IOException ex) 
	{
		System.out.println(ex);
	}
		if( numberEnglish > numberGerman ) 
	{
		System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
	} 
		else if( numberGerman > numberEnglish ) 
	{
		System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
	} 
	else 
		{
			System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
		}
	} 
}
```

Für verständnis noch die Fehlercodes:

Words.java:40: cannot find symbol
symbol  : variable german
location: class Words
        int numberGerman = german.getMatchCount();
                           ^
Words.java:41: cannot find symbol
symbol  : variable english
location: class Words
        int numberEnglish = english.getMatchCount();
                            ^
Words.java:57: cannot find symbol
symbol  : variable numberEnglish
location: class Words
                if( numberEnglish > numberGerman )
                    ^
Words.java:57: cannot find symbol
symbol  : variable numberGerman
location: class Words
                if( numberEnglish > numberGerman )
                                    ^
Words.java:61: cannot find symbol
symbol  : variable numberGerman
location: class Words
                else if( numberGerman > numberEnglish )
                         ^
Words.java:61: cannot find symbol
symbol  : variable numberEnglish
location: class Words
                else if( numberGerman > numberEnglish )
                                        ^
Note: Words.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
6 errors


----------



## Murray (21. Nov 2006)

Dieser Block

```
int numberGerman = german.getMatchCount();
int numberEnglish = english.getMatchCount();
```
gehört hinter die While-Schleife


----------



## X-Treme (21. Nov 2006)

Jo das hat schonmal 2 Fehler gekillt! Aber immer noch das Problem, dass der Compiler die Variablen nicht finden kann!


----------



## AlArenal (21. Nov 2006)

Vielleicht solltest du dir mal die Reihenfolge anschauen... Ich kann den Wagen auch nicht anlassen, wenn ich noch nicht drin sitze...


----------



## X-Treme (21. Nov 2006)

> Vielleicht solltest du dir mal die Reihenfolge anschauen...



Meinst die Reihenfolge in der while-schleife? Murray hat doch gesagt, dass die Variablen hinter die while-Schleife müssen! Jetzt versteh ich garnichts mehr??!?!?  :autsch:


----------



## Leroy42a (21. Nov 2006)

```
String[] englishArray = new String[]{"a", "is", "are", "am", "this", "I"}; 
   String[] germanArray = new String[]{"der", "die", "das", "ist", "dies", "Ich", "einem", "eine", "mit", "für"}; 

   Words english = new Words(englishArray); 
   Words german = new Words(germanArray ); 

   BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt")); 
   String line; 
   while( (line = stdin.readLine()) != null) 
   { 
    //...
      german.checkMatched( line); 
   } 

   int numberGerman = german.getMatchCount(); 
   int numberEnglish = english.getMatchCount();                    

      if( numberEnglish > numberGerman ) 
   { 
      System.out.println("Der Text in der Datei ist wahrscheinlich englisch"); 
   } 
      else if( numberGerman > numberEnglish ) 
   { 
      System.out.println("Der Text in der Datei ist wahrscheinlich deutsch"); 
   } 
   else 
      { 
         System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!"); 
      } 
   } 
}
```


----------



## Murray (21. Nov 2006)

Nee, die Reihenfolge stimmt jetzt schon (also dann, wenn die beiden ints hinter der while-Schleife dekalriert und zugewiesen werden). Das Problem ist jetzt noch der try-catch-Block, der ja einen eigenen Sichtbarkeitsbereich definiert - alles was darin deklariert wird, ist nur in diesem Block sichtbar. Pack das try vor die Zuweisung des BufferedReaders.

//EDIT: Leroys Post hatte ich noch nicht gesehen - OK, man kann den try-catch-Block natürlich auch um die gesamte main-packen (das impliziert das Fragment wohl), aber ganz weglassen geht nicht.


----------



## AlArenal (21. Nov 2006)

Oops, hab den Murray ganz überlesen (sorry, Matthias  ).

Poste nochmal deinen aktuellen Code und deine Fehler. Wenn du es so gemacht hast wie Murray schrub, sollte eigentlich alles passen, weil der Rest Folgefehler waren. Aber wer weiß schon (außer dir), was du nun wieder gemacht hast? 

EDIT:
Och, nu war ich mal end-zu-langsam. 
So eine krude Code-Formatierung machts einem auch nicht gerade einfacher. Programmier mal besser in Python!


----------



## X-Treme (21. Nov 2006)

> Pack das try vor die Zuweisung des BufferedReaders.



Meinst du so?


```
.....
        try 
	{
	BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
	String line;
	while( (line = stdin.readLine()) != null) 
	{
....
```

Wenn ja dann funzt es trotzdem net!




> Aber wer weiß schon (außer dir), was du nun wieder gemacht hast? icon_wink.gif



lol


----------



## X-Treme (21. Nov 2006)

nochmal aktueller Code:


```
import java.util.*;
import java.io.*;

public class Words 
{
	private HashSet woerter;
	private int matchcount;
	
	public Words (String[] wort) 
	{
		matchcount = 0;
		woerter = new HashSet();
		for ( int i = 0; i < wort.length; i++) 
		{
			woerter.add(wort[i]);
		}
}
public void checkMatched(String satz) 
{
	String[] tmp = satz.split(" ");
	for ( int i = 0; i < tmp.length; i++) 
	{
		if (woerter.contains(tmp[i]))
		{
			matchcount++;
		}
	}
}
public int getMatchCount() 
{
	return matchcount;
}
public static void main (String[] args) 
{
	String[] englishArray = new String[]{"a", "is", "are", "am", "this", "I"};
	String[] germanArray = new String[]{"der", "die", "das", "ist", "dies", "Ich", "einem", "eine", "mit", "für"};
	                   
	Words english = new Words(englishArray);
	Words german = new Words(germanArray ); 
	try 
	{
	BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
	String line;
	while( (line = stdin.readLine()) != null) 
	{
		int numberGerman = german.getMatchCount();
		int numberEnglish = english.getMatchCount();  
		english.checkMatched( line);
		german.checkMatched( line);
		
	}
	}
		catch(IOException ex) 
	{
		System.out.println(ex);
	}
		if( numberEnglish > numberGerman) 
	{
		System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
	} 
		else if( numberGerman > numberEnglish) 
	{
		System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
	} 
	else 
		{
			System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
		}
	} 
}
```

Und nochmal aktuelle Fehler!

Words.java:57: cannot find symbol
symbol  : variable numberEnglish
location: class Words
                if( numberEnglish > numberGerman)
                    ^
Words.java:57: cannot find symbol
symbol  : variable numberGerman
location: class Words
                if( numberEnglish > numberGerman)
                                    ^
Words.java:61: cannot find symbol
symbol  : variable numberGerman
location: class Words
                else if( numberGerman > numberEnglish)
                         ^
Words.java:61: cannot find symbol
symbol  : variable numberEnglish
location: class Words
                else if( numberGerman > numberEnglish)
                                        ^
Note: Words.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
4 errors


----------



## Murray (21. Nov 2006)

```
import java.util.*;
import java.io.*;

public class Words {
	private HashSet woerter;
	private int matchcount;
	
	public Words (String[] wort) {
		matchcount = 0;
		woerter = new HashSet();
		for ( int i = 0; i < wort.length; i++) {
			woerter.add(wort[i]);
		}
	}
	
	public void checkMatched(String satz) {
		String[] tmp = satz.split(" ");
		for ( int i = 0; i < tmp.length; i++) {
			if (woerter.contains(tmp[i])) {
				matchcount++;
			}
		}
	}
	
	public int getMatchCount() {
		return matchcount;
	}
	
	public static void main (String[] args) {
		String[] englishArray = new String[]{"a", "is", "are", "am", "this", "I"};
		String[] germanArray = new String[]{"der", "die", "das", "ist", "dies", "Ich", "einem", "eine", "mit", "für"};
		
		Words english = new Words(englishArray);
		Words german = new Words(germanArray );
		
		try {
			
			BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
			String line;
			while( (line = stdin.readLine()) != null) {
				english.checkMatched( line);
				german.checkMatched( line);
			}
		} catch(IOException ex) {
			System.out.println(ex);
		}
		
		int numberGerman = german.getMatchCount();
		int numberEnglish = english.getMatchCount();                   
		
		if( numberEnglish > numberGerman ) {
			System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
		} else if( numberGerman > numberEnglish ) {
			System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
		} else {
			System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
		}
	}
}
```

So ist es übersetzbar


----------



## X-Treme (21. Nov 2006)

Jo funktioniert! Danke! kann ich die Warnung Ignorieren (hab mal gelesen, dass das was mit der Java Version zu tun hat!) Prog macht aber das richtige!

Thx for all

&

Greetz

X-Treme


----------



## AlArenal (21. Nov 2006)

@x-treme:

Murray schrieb "Nee, die Reihenfolge stimmt jetzt schon (also dann, wenn die beiden ints *hinter* der while-Schleife dekalriert und zugewiesen werden)". Du aber hast die beiden Zeilen *in* die while-Schleife gepackt.


----------



## Murray (21. Nov 2006)

<OT>



			
				AlArenal hat gesagt.:
			
		

> hab den Murray ganz überlesen (sorry, Matthias



»Das hat dir der Teufel gesagt, das hat dir der Teufel gesagt«, schrie das Männlein, und stieß mit dem rechten Fuß vor Zorn so tief in die Erde, daß es bis an den Leib hineinfuhr, dann packte es in seiner Wut den linken Fuß mit beiden Händen, und riß sich selbst mitten entzwei.

</OT>


----------



## X-Treme (21. Nov 2006)

> Du aber hast die beiden Zeilen in die while-Schleife gepackt.



Ja sry is mir auch jetzt aufgefallen! Aber Danke


----------



## DocRandom (21. Nov 2006)

Hallo X-Treme!

..sorry, das ich auf Deine Postings nicht mehr geantwortet habe, aber ich miußte zu einem Kunden und kam erst sehr spät ( 03:00 Uhr) wieder nach hause.
Wie ich aber sehen konnte hattest Du tatkräftige Unterstützung!

mfg
DocRandom


----------



## Leroy42a (21. Nov 2006)

DocRandom hat gesagt.:
			
		

> ..sorry, das ich auf Deine Postings nicht mehr geantwortet habe, aber ich miußte zu einem Kunden und kam erst sehr spät ( 03:00 Uhr) wieder nach hause.



Also wirklich! Was ist das denn für eine Arbeitsauffassung.  :noe: 

Ich weiß jetzt wirklich nicht, ob du, mit deiner Arbeitseinstellung, 
auf Dauer noch für dieses Forum tragbar bist  :meld: 

(  )


----------



## X-Treme (22. Nov 2006)

Hi Leute! Sorry das ich nochmal was fragen muss und zwar war das Prog irgendwie Falsch(es soll OHNE Arrays arbeiten)! Also war mein Fehler! Hab die Aufgabe falsch verstanden! Jedenfalls sitz ich jetzt schon 3 Stunden dabei es zu ändern! Also so soll es ungefär aussehen:


```
import java.util.*;
import java.io.*;

public class EnglishOrGerman 
{
	private static int englishCounter=0;
	private static int germanCounter=0;

private static void EnglishGerman(String sentence)
{
	String[] temp = sentence.split(" ");
	for(int i =0; i<temp.length; i++)
	{
		String word = temp[i];
		if(german.contains(temp[i]))
		{
			germanCounter++;
		}
		else if(english.contains(temp[i]))
		{
			englishCounter++;			
		}
	}
}
public static void main(String[] arg) 
{
    	HashSet german=new HashSet();
    	HashSet english=new HashSet();
		german.add("der");
		german.add("die");
		german.add("das");
		german.add("Ich");
		german.add("dies");
		german.add("für");
		german.add("und");
		german.add("habe");
		german.add("hab");
		german.add("ein");
		german.add("einen");
	
		english.add("the");
		english.add("a");
		english.add("this");
		english.add("I");
		english.add("for");	
		english.add("and");
		english.add("Iam");
		english.add("I'm");		
	{
	try 
		{                       
			BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
			String line;
			while( (line = stdin.readLine()) != null)  
			{
				EnglishGerman(line);
			}
			} 
			catch(IOException ex) 
			{
				System.out.println(ex);
			}
			if(englishCounter > germanCounter) 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
			} 
			else if(germanCounter > englishCounter) 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
			} 
			else 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
			}
		}
	}
}
```

Der Compiler findet das HashSet irgendwie nicht! Ich hab auch keine Ahnung wo das stehen muss!!!!!
Hat vllt jemand ne kleine Hilfe?

MfG 

X-Treme


----------



## Murray (22. Nov 2006)

X-Treme hat gesagt.:
			
		

> Der Compiler findet das HashSet irgendwie nicht! Ich hab auch keine Ahnung wo das stehen muss!!!!!



Kannst du mal die genaue Fehlermeldung posten?


----------



## X-Treme (22. Nov 2006)

EnglishOrGerman.java:14: cannot find symbol
symbol  : variable german
location: class EnglishOrGerman
                if(german.contains(temp_))
                   ^
EnglishOrGerman.java:18: cannot find symbol
symbol  : variable english
location: class EnglishOrGerman
                else if(english.contains(temp))
                        ^
Note: EnglishOrGerman.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors

Also ich versteh das so, dass der Compiler an der Stelle wo er das HashSet durchsuchen soll, denkt, dass english & german Variablen sind!

Greetz

X-Treme_


----------



## Murray (22. Nov 2006)

X-Treme hat gesagt.:
			
		

> Also ich versteh das so, dass der Compiler an der Stelle wo er das HashSet durchsuchen soll, denkt, dass english & german Variablen sind!



Das sind sie ja auch. Allerdings hast du sie jetzt als lokale Variablen in der main-Methode deklariert, so dass sie nur innerhalb der main, nicht aber in anderen Methoden sichtbar sind. Wenn du daraus Class-Member machst wie englishCounter und germanCounter, sollte es gehen.


----------



## X-Treme (22. Nov 2006)

@ Murray (erstmal thx)

Also wenn ich das so mach wie du sagst (Ich nehm mal an du meints private static HashSet german; usw.) dann Compiliert er das zwar richtig, aber führt das Programm nicht aus! Weißt du was das sein könnte?

MfG

X-Treme


----------



## Murray (22. Nov 2006)

X-Treme hat gesagt.:
			
		

> Ich nehm mal an du meints private static HashSet german; usw.


Jupp. Wichtig ist dann noch, dass Du in der main nicht ebenfalls noch zwei HashSets mit den gleichen Namen anlegst.

Was passiert denn beim Aufrufen? Gibt es eine Fehlermeldung?


----------



## AlArenal (22. Nov 2006)

Fehlermeldung?

Variable nicht initialisiert?

Code?

So langsam müsstest du doch wissen, wie es hier im Forum funktioniert, oder?


----------



## X-Treme (22. Nov 2006)

erstmal hab ich doch zwei HashSets mit gleichen Namen in der Main^^(hab ich jetzt zwar geändert, aber bringt nichts)! Ich hatte doch vorher, dass mit den StringArrays! Und da wurde das HashSet schon in der Methode initialisiert! Hat das vllt damit was zu tun?

Der Compiler sagt nur:

Note: EnglishOrGerman.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Sowie bei dem vorherigen Prog auch! Nur dann kommt wieder die Kommando Zeile ohne das irgendwas ausgeführt wurde!


----------



## X-Treme (22. Nov 2006)

@ AlArenal

klar^^

der code is jetzt so:


```
import java.util.*;
import java.io.*;

public class EnglishOrGerman 
{
	private static int englishCounter=0;
	private static int germanCounter=0;
	private static HashSet german;
	private static HashSet english;

private static void EnglishGerman(String sentence)
{
	String[] temp = sentence.split(" ");
	for(int i =0; i<temp.length; i++)
	{
		String word = temp[i];
		if(german.contains(temp[i]))
		{
			germanCounter++;
		}
		else if(english.contains(temp[i]))
		{
			englishCounter++;			
		}
	}
}
public static void main(String[] arg) 
{
    	HashSet germanHash=new HashSet();
    	HashSet englishHash=new HashSet();
		german.add("der");
		german.add("die");
		german.add("das");
		german.add("Ich");
		german.add("dies");
		german.add("für");
		german.add("und");
		german.add("habe");
		german.add("hab");
		german.add("ein");
		german.add("einen");
	
		english.add("the");
		english.add("a");
		english.add("this");
		english.add("I");
		english.add("for");	
		english.add("and");
		english.add("Iam");
		english.add("I'm");		
	{
	try 
		{                       
			BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
			String line;
			while( (line = stdin.readLine()) != null)  
			{
				EnglishGerman(line);
			}
			} 
			catch(IOException ex) 
			{
				System.out.println(ex);
			}
			if(englishCounter > germanCounter) 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
			} 
			else if(germanCounter > englishCounter) 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
			} 
			else 
			{
				System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
			}
		}
	}
}
```

p.s. nicht unüberlegt^^


----------



## Murray (22. Nov 2006)

1. Die static HashSets müssen nicht nur deklariert, sondern auch initialisiert werden
2. die lokalen HashSets in der Main (germanHash und englishHash) kannst du weglassen

Im Moment dürfte eine NullPointerException zu Beginn der main-Methode auftreten.


----------



## X-Treme (22. Nov 2006)

Meinst du so: private static HashSet german = new HashSet(); ?


----------



## AlArenal (22. Nov 2006)

X-Treme hat gesagt.:
			
		

> Meinst du so: private static HashSet german = new HashSet(); ?



Warum probierst du es nicht aus, ehe du fragst? Kostet doch nix. Der PC beißt auch nicht... (jedenfalls nicht feste)


----------



## X-Treme (22. Nov 2006)

@ AlArenal

Jo hab ich! Immer noch die selbe Meldung! p.s. Sorry für die Frage


----------



## AlArenal (22. Nov 2006)

Wie, "immernoch dieselbe Meldung"? Du hast bisher keine Meldung erwähnt...


----------



## Murray (22. Nov 2006)

X-Treme hat gesagt.:
			
		

> mmer noch die selbe Meldung!


Da hab ich wohl was nicht mitbekommen - ich dachte, wir wären noch bei "es geht nicht, es komt aber auch keine Fehlermeldung"? Was ist denn aktuelle die Fehlermeldung? Und poste doch zur Sicherheit nochmal den aktuellen Code.

//EDIT: @al: mal wieder schneller


----------



## X-Treme (22. Nov 2006)

Ja ich mein ja keine Fehler Meldung sondern immer noch diese unchecked Details (wie ich auch vorher hatte (Obwohl das Programm mit dem String Array ja funktioniert hat))

Sry, wollte jetzt keine Verwirrung Stiften  

EDIT: Note: EnglishOrGerman.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details. 

das mein Ich! Und Prog reagiert noch net!


----------



## X-Treme (22. Nov 2006)

Will ja nicht spamen oder so! Aber vllt ist es besser den jetzigen code nochmal zu posten!


```
import java.util.*;
import java.io.*;

public class EnglishOrGerman 
{
	private static int englishCounter=0;
	private static int germanCounter=0;
	private static HashSet german = new HashSet();
	private static HashSet english = new HashSet();

private static void EnglishGerman(String sentence)
{
	String[] temp = sentence.split(" ");
	for(int i =0; i<temp.length; i++)
	{
		String word = temp[i];
		if(german.contains(temp[i]))
		{
			germanCounter++;
		}
		else if(english.contains(temp[i]))
		{
			englishCounter++;			
		}
	}
}
public static void main(String[] arg) 
{
		german.add("der");
		german.add("die");
		german.add("das");
		german.add("Ich");
		german.add("dies");
		german.add("für");
		german.add("und");
		german.add("habe");
		german.add("hab");
		german.add("ein");
		german.add("einen");
	
		english.add("the");
		english.add("a");
		english.add("this");
		english.add("I");
		english.add("for");	
		english.add("and");
		english.add("Iam");
		english.add("I'm");		
	
	try 
	{                       
		BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
		String line;
		while( (line = stdin.readLine()) != null)  
		{
			EnglishGerman(line);
		}
		} 
		catch(IOException ex) 
		{
			System.out.println(ex);
		}
		if(englishCounter > germanCounter) 
		{
			System.out.println("Der Text in der Datei ist wahrscheinlich englisch");
		} 
		else if(germanCounter > englishCounter) 
		{
			System.out.println("Der Text in der Datei ist wahrscheinlich deutsch");
		} 
		else 
		{
			System.out.println("Der Text in der Datei ist wahrscheinlich weder deutsch noch englisch!");
		}
	}
}
```


----------



## AlArenal (22. Nov 2006)

Dass dein Programm funktioniert ist dir aber nicht zufällig aufgefallen?


----------



## X-Treme (22. Nov 2006)

AlArenal hat gesagt.:
			
		

> Dass dein Programm funktioniert ist dir aber nicht zufällig aufgefallen?



Wie meinst du das?


----------



## X-Treme (22. Nov 2006)

lol du hast recht! Sorry (blödblödblöd)

man sollte sein Compilertes Prog auch mal ausführen!!!!!!!!!!!!!!!


----------



## X-Treme (22. Nov 2006)

OK, nachdem die Dummheit mal wieder gesiegt hat, hab ich noch ne Frage! Ich hab das Prog ja jetzt mit der Textdatei Sprache.txt fest verankert! Wenn ich jetzt aber eingeben will, was für ne Datei das Prog untersuchen soll! Wie mach ich das? Also zum verständnis: Ich will eingeben können in der Konsole von Linux --> java EnglishOrGerman Sprachen.txt

Greetz

X-Treme

p.s. und noch mal sry wegen gerad eben! Bin nich ganz auf der Höhe heute!^^


----------



## Murray (22. Nov 2006)

Was du an der Konsole hinter den Klassennamen schreibts, landet auf magische Weise als Argument in der main-Methode (deshalb ist die mit einem String[] als Parameter deklariert).

Du kannst in der main also Folgendes machen:

```
public static void main(String[] arg) {
   String fileName = (args.length > 0) ? args[0] : "/home/lars/sprache.txt";

   /* ... */

   BufferedReader stdin = new BufferedReader(new FileReader( fileName));
}
```

Anstelle des ternären Oprators ( "?") kann man natürlich auch ein "normales" if verwenden:

```
public static void main(String[] arg) {
   String fileName;
   if (args.length > 0)  {
     fileName = args[0];
   } else {
     fileName =  "/home/lars/sprache.txt";
   }

   /* ... */

   BufferedReader stdin = new BufferedReader(new FileReader( fileName));
}
```


----------



## X-Treme (22. Nov 2006)

@ Murray & AlArenal

Thx für alles!

@ Murray

jo funzt Danke!


MfG

X-Treme


----------

