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