Dateien Auslesen

Status
Nicht offen für weitere Antworten.
hast es oben doch schon richtig gemacht und ihm die aktuelle zeile übergebe

Code:
boolean englisch = sp.schlüssel( line );

warum diesmal nicht?
 
deswegen:

Sprachen.java:34: cannot find symbol
symbol : variable line
location: class Sprachen
boolean deutsch = sp.istDeutsch( line );
^
1 error
 
so hab ichs jetzt

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


public class Sprachen
{
private boolean istDeutsch(String satz)
{
	if(satz.matches(".*[äÄöÖüÜß].*"))
	{
	return true;
	}
	else
	{
	return false;
	}
	}
	 public boolean schlüssel( String str)
   { 
      if ( (str == null)  || (str.length() == 0)) return false;
      return istDeutsch( str.charAt( str.length()-1));
   } 
	public static void main (String[] args)
	{
		try
	{	                            
		BufferedReader stdin = new BufferedReader(new FileReader("/home/lars/sprache.txt"));
		String line;
		while( (line = stdin.readLine()) != null)
		{
			System.out.println(line);
		}
		}
		catch(IOException ex)
		{
			System.out.println(ex);
		}
		Sprachen sp = new Sprachen();
		boolean englisch = sp.schlüssel( line );
		System.out.print( "Der Satz ist wahrscheinlich ");
		if ( englisch ) 
		{
			System.out.println( "Englisch");
		} 
		else
		{
			System.out.println( "Deutsch");    			
		}
	}
}

Jetzt spuckt er aber aus:

Sprachen.java:21: istDeutsch(java.lang.String) in Sprachen cannot be applied to (char)
return istDeutsch( str.charAt( str.length()-1));
^
Sprachen.java:39: cannot find symbol
symbol : variable line
location: class Sprachen
boolean englisch = sp.schlüssel( line );
^
2 errors

(p.s. ich werd noch verrückt! :bahnhof: )
 
😀

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


public class Sprachen
{
private boolean istDeutsch(String satz)
{
   if(satz.matches(".*[äÄöÖüÜß].*"))
   {
   return true;
   }
   else
   {
   return false;
   }
}
    
   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){
              System.out.print( "Der Satz ist wahrscheinlich Deutsch");
          }
          else{
             System.out.print( "Der Satz ist wahrscheinlich Englisch");
       }
    } //end try
    catch(IOException ex)
      {
         System.out.println(ex);
      }//end catch
    } //end main

} //end Class
 
erstmal Danke, aber der mekkert immer noch (5Fehler^^). Also manchmal.....
hier die Fehler:^^

Sprachen.java:26: ')' expected
if(istDeutsch(line){
^
Sprachen.java:33: illegal start of expression
}
^
Sprachen.java:34: 'catch' without 'try'
catch(IOException ex)
^
Sprachen.java:20: 'try' without 'catch' or 'finally'
try
^
Sprachen.java:39: '}' expected
}
^
5 errors

Aber trotzdem echt nett! thx
 
bist du gar nicht krativ, des i ein klammer problem:

Code:
  if(istDeutsch(line)){

damit dürfte das wohl behoben sein
 
sry net gesehen :bahnhof:

aber noch ne Frage, kann das sein, dass das Try an ner falschen Stelle steht oder so? Weil er mekkert noch über 3 Fehler^^

So wie ich das verstanden hab, will das Try ein catch haben! Kann es aber net finden!
 
hier

Sprachen.java:34: 'catch' without 'try'
catch(IOException ex)
^
Sprachen.java:20: 'try' without 'catch' or 'finally'
try
^
2 errors
 
ich kann ja Blind, aber meines erachtens nach sind die Klammern alle richig!

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


public class Sprachen
{
	private boolean istDeutsch(String satz)
	{
		if(satz.matches(".*[äÄöÖüÜß].*"))
		{
			return true;
		}
		else
		{
			return false;
		}
	}   
	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)){
			System.out.print( "Der Satz ist wahrscheinlich Deutsch");
		}
		else
		{
			System.out.print( "Der Satz ist wahrscheinlich Englisch");
		}
		}
			catch(IOException ex)
			{
				System.out.println(ex);
			}
		}
	}
}
 
des catch steht in der while schleife


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


public class Sprachen{

   private boolean istDeutsch(String satz) {
      if(satz.matches(".*[äÄöÖüÜß].*")){
         return true;
      }
      else{
         return false;
      }
   }   
   
    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)){
                System.out.print( "Der Satz ist wahrscheinlich Deutsch");
             }
             else{
                System.out.print( "Der Satz ist wahrscheinlich Englisch");
             }
          }
      }
      catch(IOException ex) {
            System.out.println(ex);
      }
   }
}
 
Jo Danke ,jetzt funzt es! :lol:

Aber man hätte aus der methode istDeutsch noch static machen müssen^^

So das war der erste Teil! Meine Zweite Idee war (um die genauigkeit des Progs zu erhöhen), noch ein Methode zu benutzen die bestimmte Schlüssel Wörter wie "is, are, am usw" sucht und dann wieder dahin zurück geht um das auszugeben, dass das Enlgisch ist! Kann man das machen oder?! Ich habs mit nem Array Probiert aber ging net^^


ABER ERSTMAL DANKE 😀

Greetz

X-Treme
 
Klar geht (fast) alles:
als erstes schau mal hier, was zum lesen

schau die die mehtoden split und equals an, damit solltest du weiter kommen.
 
Code:
public String[] split(String regex, int limit)

kann ich für regex irgendwas einsetzen oder was hat das zu bedeuten?
 
Also equals steht für entspricht! Also wenn im Satz das Wort is auftauchen würde müsste das so aussehen?


Code:
if(schlüsselwort.equals("is")
{
    System.out.println("Das Wort" + schlüsselwort "kommt in dem Text vor und ist deßhalb wahrscheinlich englisch!");

so in der art (für equals)?
 
sollte das dann so aussehen, oder ist da was falsch?

Code:
public boolean contentEquals(StringBuffer sb)
	{
	if(sb.equals("is", "are", "I");
	{
		System.out.println("Der Satz enthält ein englisches Wort! Und zwar:" +sb);
	}
	else
	{
		return false;
	}

Thx to dercheffe^^
 
hm, ich würd sagen des geht schief probier mal:
Code:
private void contentEquals(String wort){
    if(wort.equals("is") || wort.equals("are") || wort.equals("I")){
       //mach Irgendwas sinnvolles
    }
    else{
        //mach Irgendwas sinvolles
    }
}

Du musst ja die Überprüfung für jedes Wort aus dem Satz machen, also überleg dir was du machst, wenn du eins der Schlüsselwörter in einem Satz findest. Und überlege die wie du diese Mehtode auf jedes Wort des Satzes anwendes (vieleicht mit split() .
 
hab zwei Fragen dazu:
1. Was überprüft das Prgramm den jetzt wenn es nicht mit der Methode jedes Wort überprüft?
2. Was meinst du mit "mach was sinnvolles" -> Irgend ne Anweisung oder eine Bildschirm ausgabe?
 
jetzt siehst so aus:

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


public class Sprachen
{	
	private void contentEquals(String wort)
	{
		if(wort.equals("is") || wort.equals("are") || wort.equals("I"))
		{
			System.out.println("enthält");
		}
		else
		{
			System.out.println("enthält nicht");
		}
	} 
	private static boolean istDeutsch(String satz)
	{
		if(satz.matches(".*[äÄöÖüÜß].*"))
		{
			return true;
		}
		else
		{
			return false;
		}
	}   
	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)){
			System.out.print( "Der Satz ist wahrscheinlich Deutsch");
		}
		else
		{
			System.out.print( "Der Satz ist wahrscheinlich Englisch         ");
		}
		}
		}
			catch(IOException ex)
			{
				System.out.println(ex);
			}
				System.out.println("  ");
		}
	}

Sieht aber bei der Ausgabe so aus, als würd die Methode garnichts tun?!?!
 
Also des Programm des wir oben haben mit dem istDeutsch, überprüft ja Zeile, ob da ein umlaut drinn ist, und wenn in einer Zeile ein Umlaut drinn ist, dann gibt er was auf dem Bildschirm aus.

Eine Zeile besteht aber aus mehreren Wörtern. Also musst du es schaffen, diese Wörter aus der Zeile rauszubekommen. Das kann man mit der String Methode split machen.

Die Methode die ich grade geschrieben haben überprüft einen String ob er gleich "is", "are", "I" ist. Sollte also ein Wort sein, was hier überprüft wird.

Ich würde nicht bei jeder Zeile des Textes ausgeben ob diese Zeile deutsch oder englisch ist. Ich würde mir zwei counter machen, einen für deutsche vorkommen und einen für englische. Wenn jetzt was deutsches vorkommt, dann würde ich den counter für deutsch hochzählen, wenn was englisches vorkommt, dann eben den counter für englisch.

zum schluß die beiden counter vergleichen und dann daraus das ergebnis bilden.

Erweitere am besten das Programm mit istDeutsch so, dass wenn eine Zeile keinen Umlaut hat, jedes Wort dieser Zeile überprüft wird, ob es sich um eines deiner schlüsselwörter handelt.
 
wäre das so richtig deklariert?

Code:
public String[wort] split(String wörter)
 
Du hast doch schon mal in c++ programmiert, oder?

also split wie man in der api nachlesen kann, erhält als parameter einen String und gibt ein Array zurück. Also

Hier ein Beispiel:

Code:
String satz = "Hallo dies ist ein Satz"
String[] temp = satz.split(" ");

System.out.println(temp[0]);
System.out.println(temp[1]);
System.out.println(temp[2]);

Ausgabe wäre dann:

Hallo
dies
ist

allet klar wie split funktioniert?

und als counter kannst du doch einfach ne int variable nehmen die du hochzählst
 
jo is Klar nur, du hast den Satz ja sozusagen intialisiert! Ich will aber ja den Satz aus der Datei haben! Und der is ja auch veränderbar!
 
Code:
import java.io.*;
import java.util.*;


public class Sprachen{

   int englisch = 0;
   int deutsch = 0;
   
   private boolean istDeutsch(String satz) {
      if(satz.matches(".*[äÄöÖüÜß].*")){
         return true;
      }
      else{
         return false;
      }
   }   
   
   private boolean checkWords(String satz){
   	String[] temp = satz.split(" ")
   	for(int i =0; i<=temp.length; i++){
   		if(wort.equals("is") || wort.equals("are") || wort.equals("I")){
      			 this.englisch++;
    		}
    		else{
        		this.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)){
                this.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("Keine Ahnung welche Sprache dieser Text hat, lesen könnte helfen.");
      }
   }
}

Keinen Nerv mehr, ich geh essen.
 
Jo Danke für deine Geduld! Ich weiß ich brauch immer ein bischen..... 🙁

Aber trotzdem Danke für alles!

MfG

X-Treme

p.s. Guten Apetit^^
 
Diese Frage geht NICHT an dercheffe (wiil net nerven^^)
aber ich hab in dem Code von Ihm noch Fehler!

Sprachen.java:24: ';' expected
for(int i =0; i<=temp.length; i++)
^
1 error

???:L [/code]
 
ja so hab ich das auch gemacht, aber dann spuckt er auf einamal 10 Fehler aus! die irgendwas mit englisch < deutsch zu tun haben, aber ich kuck erstmal (bischen Knoblen^^)

thx
 
Falls du ne Idee hast:

Sprachen.java:26: cannot find symbol
symbol : variable wort
location: class Sprachen
if(wort.equals("is") || wort.equals("are") || wort.equals("I"))
^
Sprachen.java:26: cannot find symbol
symbol : variable wort
location: class Sprachen
if(wort.equals("is") || wort.equals("are") || wort.equals("I"))
^
Sprachen.java:26: cannot find symbol
symbol : variable wort
location: class Sprachen
if(wort.equals("is") || wort.equals("are") || wort.equals("I"))
^
Sprachen.java:44: non-static method istDeutsch(java.lang.String) cannot be referenced from a static context
if(istDeutsch(line))
^
Sprachen.java:46: non-static variable this cannot be referenced from a static context
this.deutsch++;
^
Sprachen.java:50: non-static method checkWords(java.lang.String) cannot be referenced from a static context
checkWords(line);
^
Sprachen.java:58: non-static variable englisch cannot be referenced from a static context
if(englisch > deutsch)
^
Sprachen.java:58: non-static variable deutsch cannot be referenced from a static context
if(englisch > deutsch)
^
Sprachen.java:62: non-static variable deutsch cannot be referenced from a static context
else if(deutsch > englisch)
^
Sprachen.java:62: non-static variable englisch cannot be referenced from a static context
else if(deutsch > englisch)
^
10 errors
 
So, wie hier alle Variablen und Methoden direkt aus der main-Methode verwendet werden, kann es nur klappen, wenn diese Variablen und Methoden static deklariert sind - besser (im Sinne der OOP) wäre es natürlich, hier sauber mit Instanzen zu arbeiten.
 
Sprachen.java:26: cannot find symbol
symbol : variable wort
location: class Sprachen
if(wort.equals("is") || wort.equals("are") || wort.equals("I"))
^
Sprachen.java:26: cannot find symbol
symbol : variable wort
location: class Sprachen
if(wort.equals("is") || wort.equals("are") || wort.equals("I"))
^
Sprachen.java:26: cannot find symbol
symbol : variable wort
location: class Sprachen
if(wort.equals("is") || wort.equals("are") || wort.equals("I"))
^
3 errors

kann das sein, dass man wort noch irgendwo deklarieren muss?
 
Code:
   private static int englisch = 0;
   private static int deutsch = 0;
   
   private static boolean istDeutsch(String satz) {
     ...
   }   
   
   private static boolean checkWords(String satz)
      ...
    }

Die Main-Methode muss static sein, sonst kann man sie nicht aufrufen!
 
X-Treme hat gesagt.:
kann das sein, dass man wort noch irgendwo deklarieren muss?

Ja, da ist bei der Umstellung wohl etwas schiefgegangen:
Code:
  private 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++;
          }
       }
    }
 
X-Treme hat gesagt.:
kann das sein, dass man wort noch irgendwo deklarieren muss?

Wenn das in dieser Methode steht:
Code:
private void contentEquals(String wort) 
   { 
      if(wort.equals("is") || wort.equals("are") || wort.equals("I")) 
      { 
         System.out.println("enthält"); 
      } 
      else 
      { 
         System.out.println("enthält nicht"); 
      } 
   }
dann nicht. Es ist dort als formaler Parameter definiert und
kann keine derartige Fehlermeldung bewirken-
 
Kann mir mal bitte jemand sagen, was hier jetzt falsch ist?

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++)
		{
			if(wort.equals("is") || wort.equals("are") || wort.equals("I"))
			{
				this.englisch++;
			}
			else
			{
				this.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))
		{
			this.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!");
		}
	}
}
 
wenn ichs so mach (nach Murrays Beispiel) gehts auch net!

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"))
			{
				this.englisch++;
			}
			else
			{
				this.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))
		{
			this.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!");
		}
	}
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben