Dateien Auslesen

Status
Nicht offen für weitere Antworten.
Jo Leute ich mach jetzt Feierabend! Für heute hab ich auch die Schnauze voll^^

aber morgen gehts weiter^^

Greetz

X-Treme
 
Und wo bitte ist hier drin
Code:
private static boolean checkWords(String satz) 
   { 
      String[] temp = satz.split(" "); 
      for(int i =0; i<=temp.length; i++) 
      { 
         String wort = temp[i]; 
         if(wort.equals("is") || wort.equals("are") || wort.equals("I")) 
         { 
            this.englisch++; 
         } 
         else 
         { 
            this.deutsch++; 
         } 
      } 
   }

die Variable wort deklariert? :shock:

Preisfrage: Durch welche (deklarierte) Variable muß wort ersetzt werden,
sodaß die Methode syntaktisch und semantisch korrekt ist? ???:L
 
Uuupps!

wort ist ja doch mittlerweile deklariert! 😳

Irgendwie macht mich die andauernde Eingabe meines
Benutzernamens kirre im Kopf. :autsch:
 
Mittlerweile dürfte das Problem eher darin bestehen, dass durch die Umstellung auf statics das this in der Methode nicht mehr lediglich überflüssig, sondern wirklich falsch ist.

Also:
Code:
private static boolean checkWords(String satz)
   {
      String[] temp = satz.split(" ");
      for(int i =0; i<=temp.length; i++)
      {
         String wort = temp[i];
         if(wort.equals("is") || wort.equals("are") || wort.equals("I"))
         {
            englisch++;
         }
         else
         {
            deutsch++;
         }
      }
   }
 
AlArenal hat gesagt.:
Meld dich doch einfach an 😛

Wenn ich mein Passwort noch kennen würde oder zumindest,
welche email-Adresse ich hier angegeben habe und dazu dann noch
wüßte wie das Passwort bei dieser email-Adresse ist und mach dann
noch mit Kontoeinrichtungen in diesem bescheuerten Outlook, der
auf diesem Ersatzrechner installiert ist, auskennen würde und mich
dieses Augenkrebserregende XP-Look&Feel, was ja auf gar keinen Fall
geändert werden darf
, nicht ohnehin schon brastig machen würde; vielleicht.

Eins ist schon mal klar: Wenn mein Rechner nach einer Woche von der
Reparatur zurückkommt, muß ich erstmal in Reparatur... :autsch:
 
Leroy42a hat gesagt.:
Uuupps!

wort ist ja doch mittlerweile deklariert! 😳

Irgendwie macht mich die andauernde Eingabe meines
Benutzernamens kirre im Kopf. :autsch:

oO mmM

Naja, ich kanns erst morgen ausprobieren Murray...(aber ich vertrau dir mal!^^) Hab das Prog nähmlich auf meinem Arbeitsplatz Rechner liegen^^

Also bis morgen^^
 
Guten Morgen allerseits, ich hät noch eine Frage zu meinem Prog und zwar wollte ich wohl Fragen wo ich hier noch eine Klammer oder ein return statement hinsetzen muss!

Code:
import java.io.*;
import java.util.*;


public class Sprachen
{
	private static int englisch = 0;
	private static int deutsch = 0;
  
	private static boolean istDeutsch(String satz) 
	{
	if(satz.matches(".*[äÄöÖüÜß].*"))
	{
		return true;
	}
	else
	{
		return false;
	}
}      
	private static boolean checkWords(String satz)
	{
		String[] temp = satz.split(" ");
		for(int i =0; i<=temp.length; i++)
		{
			String wort = temp[i];
			if(wort.equals("is") || wort.equals("are") || wort.equals("I"))
			{
				englisch++;
			}
			else
			{
				deutsch++;
			}
		}
	}
	public static void main (String[] args)
	{
		try
	{                             
		BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
		String line;
		while( (line = stdin.readLine()) != null)
		{
			if(istDeutsch(line))
		{
			deutsch++;
		}
		else
		{
			checkWords(line);
		}
	}
}
	catch(IOException ex) 
	{
		System.out.println(ex);
	}
	if(englisch > deutsch)
	{
		System.out.println("Dieser Text ist wahrscheinlich Englisch");
	}
	else if(deutsch > englisch)
	{
		System.out.println("Dieser Text ist wahrscheinlich Deutsch");
	}
		else
		{
			System.out.println("Dieser Text ist wahrscheinlich weder deutsch oder englisch!");
		}
	}
}

Greetz X-Treme
 
Code:
private static boolean checkWords(String satz)
wie du es deklariert hast musst du noch einen boolean zurückgeben

als ich gestern abend mir dieses programm durch den kopf hab gehen lassen ist mir noch ein fehler aufgefallen. bei check words wird überprüft ob ein satz die "schlüsselwörter" enthält. wenn dies der fall ist, dann wird englisch hochgezählt, wenn nicht dann deutsch. Dies geschieht für jedes wort. ein englischer satz besteht aber vielmehr aus wörtern die eben nicht die "schlüsselwörter" sind. also zählt er häufiger den deutschen int hoch. ich würde das else entfernen, dann ist die ausgabe korrekter, oder eben die schlüsselwörter vervielfachen um es genauer hinzubekommen.
 
als ich gestern abend mir dieses programm durch den kopf hab gehen lassen ist mir noch ein fehler aufgefallen. bei check words wird überprüft ob ein satz die "schlüsselwörter" enthält. wenn dies der fall ist, dann wird englisch hochgezählt, wenn nicht dann deutsch. Dies geschieht für jedes wort. ein englischer satz besteht aber vielmehr aus wörtern die eben nicht die "schlüsselwörter" sind. also zählt er häufiger den deutschen int hoch. ich würde das else entfernen, dann ist die ausgabe korrekter, oder eben die schlüsselwörter vervielfachen um es genauer hinzubekommen.

Jo ich hab ne Liste mit den 10 häufigsten deutschen und englischen Wörtern. Ist das dann immer noch zu ungenau oder nicht?

der
die
und
in
den
von
zu
das
mit
sich

of
to
and
a
in
for
is
the
that
on
 
Wie müsste ich das denn machen, wenn ich für beides Überprüfen will?

wo soll das true oder false denn stehen? direkt hinter der Klammer oder bei der If-Anweisung?
 
Ich habs jetzt so gemacht:


Code:
import java.io.*;
import java.util.*;


public class Sprachen
{
	private static int englisch = 0;
	private static int deutsch = 0;
  
	private static boolean 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"))
		{
			deutsch++;
		}
	}
}      
	private static boolean checkWords(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)
		{
			if(istDeutsch(line))
		{
			deutsch++;
		}
		else
		{
			checkWords(line);
		}
	}
}
	catch(IOException ex) 
	{
		System.out.println(ex);
	}
	if(englisch > deutsch)
	{
		System.out.println("Dieser Text ist wahrscheinlich Englisch");
	}
	else if(deutsch > englisch)
	{
		System.out.println("Dieser Text ist wahrscheinlich Deutsch");
	}
		else
		{
			System.out.println("Dieser Text ist wahrscheinlich weder deutsch oder englisch!");
		}
	}
}

hab nur noch immer das mit dem mising return statement und einen Klammerfehler
 
Das scheint irgendwie nicht so zu funktionieren oO

Der will unbedingt boolean haben! Sagt er auch found:viod required: boolean!
 
:shock: :shock: :shock: :shock:
siehe hier

wenn du mit :### feritg bist, kannst du nochmal eine :?: stellen, aber ich hoffe dir geht vorher ein :idea: auf.

Da dies bestimmt nicht die letze Aufgabe ist, die du in deinem Praktikum bekommst, solltest du dann des Buch Java ist auch eine Insel lesen.
 
Ich glaub ich habs! Das Programm liefert das richtige ergebnis, aber könnte vllt jemand nochmal prüfen ob das Prog den richtigen weg nimmt?

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"))
		{
			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)
		{
			if(line.matches(".*[äÄöÖüÜß].*"))
		{
			deutsch++;
		}
		else
		{
			englisch++;
		}
	}
}
	catch(IOException ex) 
	{
		System.out.println(ex);
	}
	if(englisch > deutsch)
	{
		System.out.println("Dieser Text ist wahrscheinlich Englisch");
	}
	else if(deutsch > englisch)
	{
		System.out.println("Dieser Text ist wahrscheinlich Deutsch");
	}
		else
		{
			System.out.println("Dieser Text ist wahrscheinlich weder deutsch oder englisch!");
		}
	}
}

thx
 
Du hast hier offenbar zwei Ansätze vermischt; die Methoden istDeutsch und isEnglisch werden überhaupt nicht aufgerufen; vielmehr wird anstelle der in diesen Methoden implementierten Wortanalyse direkt in der main einfach jede Zeile dahingehend untersucht, ob sie einen Umalut enthält. Du müsstest dich also entscheiden, welchen Ansatz du verfolgen willst.
 
Ja das mit den Umaluten unten hinzuschreiben war nur so ne Idee eigentlich siehts so aus:

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"))
		{
			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)
		{
			if(istDeutsch(line))
		{
			deutsch++;
		}
		else
		{
			 istEnglisch(line);
		}
	}
}
	catch(IOException ex) 
	{
		System.out.println(ex);
	}
	if(englisch > deutsch)
	{
		System.out.println("Dieser Text ist wahrscheinlich Englisch");
	}
	else if(deutsch > englisch)
	{
		System.out.println("Dieser Text ist wahrscheinlich Deutsch");
	}
		else
		{
			System.out.println("Dieser Text ist wahrscheinlich weder deutsch oder englisch!");
		}
	}
}

Ich bin noch am Knobeln, weil "dercheffe" gesagt, dass ich das einfach void mach soll! Aber wenn ich das tue will er auf einaml wieder boolean haben! Sehr verwirrend^^
 
so siehts nähmlich aus!

incompatible types
found : void
required: boolean
if(istDeutsch(line))
^
1 error

Ich find dazu nix! Ich entnehme daraus, dass er boolean haben will! Aber wie???
 
Entweder machst du die Methoden void und erhöhst die Zählen in den Methoden du oder lieferst Werte zurück und erhöhst die Zähler dort ,wo die Methoden augerufen werden. Im Moment mischt du das.

Wenn Du istDeutsch und istEnglisch so lassen willst, könnte die main so aussehen:
Code:
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("Dieser Text ist wahrscheinlich englisch");
     } else if(deutsch > englisch) {
      System.out.println("Dieser Text ist wahrscheinlich deutsch");
     } else {
         System.out.println("Dieser Text ist wahrscheinlich weder deutsch oder englisch!");
     }
   }
 
erstmal Danke Murray, kann man irgendwo Fehlermeldungen nachlesen?

Ich hab nähmlich (zur laufzeit allerdings) folgenden bekommen:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Sprachen.istDeutsch(Sprachen.java:15)
at Sprachen.main(Sprachen.java:42)

kann man sowas irgendwo nachschlagen, oder net?
 
jo THX. kann das sein, dass das Programm biede Methoden jedesmal ausführt und dann auch jedes mal zählt? Ich jetzt nen Deutschen Text in die Datei geschrieben und: Diese ist ein Test! Jetzt gibt mir aber aus, dass der Text weder Deutsch nohc Englisch sei!
 
Also der Fehler war, dass in "Dies ist ein Test!" keines der Schlüsselwörter vorkam^^

Also ist das alles ne Frage der genauigtkeit!

Danke an alle

Greetz

X-Treme
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben