HashTables

Status
Nicht offen für weitere Antworten.

DocRandom

Top Contributor
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
 
L

Leroy42a

Gast
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:

( :cool: )
 

X-Treme

Bekanntes Mitglied
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:

Code:
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
 

X-Treme

Bekanntes Mitglied
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

Top Contributor
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

Bekanntes Mitglied
@ 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

Top Contributor
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

Top Contributor
Fehlermeldung?

Variable nicht initialisiert?

Code?

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

X-Treme

Bekanntes Mitglied
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

Bekanntes Mitglied
@ AlArenal

klar^^

der code is jetzt so:

Code:
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

Top Contributor
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.
 

Murray

Top Contributor
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

Bekanntes Mitglied
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

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

Code:
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!");
		}
	}
}
 

X-Treme

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

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

X-Treme

Bekanntes Mitglied
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

Top Contributor
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:
Code:
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:
Code:
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));
}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben