# IF Anweisung zeigt Fehler trotz richtiger Eingabe?



## Schlucki6666 (12. Nov 2014)

Hallo Gemeinde;
Nachdem ich nun meine APP fast fertig habe, inklusive ListViews mit eigenem Adappter und Download von Daten aus dem I-Net, stehe ich wieder einmal vor einem "mini"-Problem. Wobei ich denke, dass ich den Fehler schon 100-Mal im Netz gelesen habe oder ihn aber trotzdem immer wieder übersehe. Also bitte ich mal wieder um Nachsicht!
Folgendes kleines Problem:
Ich habe eine ganz normale IF Anweisung also If (a<b) {Anweisung}! Nur Eclipse verlangt von mir nach der "()" ein ";" was aber doch falsch ist!? Wenn ich das ";" einfüge bekomme ich keine Fehleranzeige mehr, ABER das ist doch falsch oder liege ich hier falsch? Ich finde im Netz nur Angaben, dass diese Eingabe falsch ist, aber woran es liegen kann??? Oder habe ich es überlesen?

Ich habe mal den Code (Schnippsl) hier eingefügt:


```
if(v.getId()==R.id.button1)
	{
try {		//Erzeugen des Dateinamens	
     String mon = "";
     String jahr = "";
     String datei = "";
	   DateFormat datumFormat = new SimpleDateFormat("dd-MM-yyyy"); // Format für 24-Stunden-Anzeige
		String Datum = datumFormat.format(new Date());
		String[] splitResult = Datum.split("-"); 
		EditText mon1 = (EditText)findViewById(R.id.monat);
		     mon = mon1.getText().toString();
		     jahr= splitResult[2];
		     datei = mon+"_"+jahr+".txt";
				// Ende Dateiname
						
//Ergänzen der Datei bei fehlenden Einträgen auf eine Länge von 1121 Zeilen
		Integer anzahl = 0;
		Integer ende = 1121;
		Integer summe = 0;
		String zeile = "";
						
			File myFile2 = new File("/sdcard/"+datei);
			FileInputStream fIn2 = new FileInputStream(myFile2);

			BufferedReader rd = new BufferedReader(
			new InputStreamReader(fIn2));

				FileWriter fw2 = new FileWriter("/sdcard/" + datei, true);
				BufferedWriter bw2 = new BufferedWriter(fw2);
   				String[] Listen = new String[1121];
					for(int i = 0; (zeile = rd.readLine())!=null; i++)
                                                           {Listen[i] = zeile;
				 			     anzahl=i;}
							
					If (anzahl < ende);  // HIER SOLLTE DOCH KEIN ; STEHEN ODER???
						{
						summe = ende - anzahl;
						for(int i=anzahl; i<ende-1; i++){
						Listen[i] = "Lückenbüsser"+"\n";
						bw2.write(Listen[i]);	
						}
							}
						bw2.close();
						rd.close();
				// Ende der Ergänzung der Zeileneinträge
```

Ich weis beim Code kann/könnte man so manches anders/einfacher schreiben, aber ich bin schon glücklich, dass ich so hinbekommen habe 

Danke schon mal im voraus UND schon vorab wieder sorry, wenn es eine Kleinigkeit ist, die ein erfahrener Programmierer sofort erkennt - ich als Neuling aber nicht! ;(

Schlucki


----------



## VfL_Freak (12. Nov 2014)

Moin,



Schlucki6666 hat gesagt.:


> Nur Eclipse verlangt von mir nach der "()" ein ";" was aber doch falsch ist!?
> Wenn ich das ";" einfüge bekomme ich keine Fehleranzeige mehr, ABER das ist doch falsch oder liege ich hier falsch?


also zuerstmal: Dein Code ist grausam formatiert!!
Rück ihn mal richtig ein .... zumindest scheint am Ende eine schließende Klammer zu fehlen (oder wurde sie nur nicht gepostet ???)

Syntaktisch ist sowas nicht unbedingt falsch

```
for( int i = 0; i < 5; i++ );
{
    ...
}
```
Nur ist die Schleife eben nach dem Semikolon beendet, sprich der Block "{...}" würde hierbei nicht i-mal, sondern anschließend nur einmal ausgeführt !!
Es gibt sicherlich Fälle, bei denen eine solche Schreibweise sinnvoll sein kann !!

Welche Meldung kommt denn genau ????
Es wird mit einiger Sicherheit mit Deiner Klammerung zusammen hängen!

Gruß
Klaus


----------



## Schlucki6666 (12. Nov 2014)

@Klaus;

Sorry für die Formatierung des Textes! 
Aber die For - Schleife soll die angegeben Zahl durchlaufen wenn die IF-Anweisung zutrifft!? Das ist ja mein Problem


----------



## VfL_Freak (12. Nov 2014)

Moin,



VfL_Freak hat gesagt.:


> Welche Meldung kommt denn genau ????
> Es wird mit einiger Sicherheit mit Deiner Klammerung zusammen hängen!


NOCHMAL .... :noe:

Gruß
Klaus


----------



## Schlucki6666 (12. Nov 2014)

@Klaus;
Die APP läuft eigentlich "durch" keine Fehler oder sonstiges. Nur wenn ich eben ";" wegnehme dann zeigt er mir gleich den Fehler in der Zeile an und schreibt: "Syntax error, insert ";" to complete Statement"!?

Was die "}" betrifft wurde sie nicht mit kopiert!

lg
Schlucki


----------



## Joose (12. Nov 2014)

Schlucki6666 hat gesagt.:


> ..... den Fehler in der Zeile an und schreibt: "Syntax error, insert ";" to complete Statement"!?



Und das deutet normalerweise auf einen Syntakfehler hin, daher auch der Hinweis von Klaus wegen der Formatierung des Codes.
Wenn er passend formatiert ist sollte es leicht erkennbar sein wo vielleicht eine Klammer oder ein ";" oder sonst etwas fehlt.


----------



## VfL_Freak (12. Nov 2014)

Ok, da Du es nicht möchtest, habe ich es mal formatiert ....


```
if( v.getId() == R.id.button1 )
{
  try 
  {	//Erzeugen des Dateinamens
    String mon = "";
    String jahr = "";
    String datei = "";
    DateFormat datumFormat = new SimpleDateFormat("dd-MM-yyyy"); // Format für 24-Stunden-Anzeige
    String Datum = datumFormat.format( new Date() );
    String[] splitResult = Datum.split( "-" );
    EditText mon1 = (EditText)findViewById( R.id.monat );
    mon = mon1.getText().toString();
    jahr= splitResult[2];
    datei = mon + "_" + jahr + ".txt";
    // Ende Dateiname
 
    //Ergänzen der Datei bei fehlenden Einträgen auf eine Länge von 1121 Zeilen
    Integer anzahl = 0;
    Integer ende = 1121;
    Integer summe = 0;
    String zeile = "";
 
    File myFile2 = new File( "/sdcard/" + datei );
    FileInputStream fIn2 = new FileInputStream( myFile2 );
 
    BufferedReader rd = new BufferedReader( new InputStreamReader(fIn2) );
    FileWriter fw2 = new FileWriter( "/sdcard/" + datei, true );
    BufferedWriter bw2 = new BufferedWriter( fw2 );
    String[] Listen = new String[1121];

  for( int i = 0; (zeile = rd.readLine()) != null; i++ )
    {
      Listen[i] = zeile;
      anzahl=i;
    }
    
    if( anzahl < ende ); // HIER SOLLTE DOCH KEIN ; STEHEN ODER???
    {
      summe = ende - anzahl;
      for( int i=anzahl; i < ende-1; i++ )
      {
        Listen[i] = "Lückenbüsser" + "\n";
        bw2.write( Listen[i] );	
      }
    }
    bw2.close();
    rd.close();
// Ende der Ergänzung der Zeileneinträge

} // !!!
```

Schau' Dir mal Deinen Datentyp in den Zeilen 19 - 21 an !!!

Und dann würde ich aus der for-Schleife ohnehin besser ein while-Schleife machen!

```
while( (zeile = rd.readLine()) != null )
{
    Listen[anzahl] = zeile;
    anzahl++;
}
```
Ein fehlendes Semikolon habe ich so auf die Schnelle nicht gesehen ...
Das ganze kann aber durchaus auch aus dem umliegenden Code kommen !!!

Gruß
Klaus


Gruß
Klaus


----------



## Schlucki6666 (12. Nov 2014)

@Klaus:
Danke!!!
Hatte in der letzten Zeit viele Nachtdienste, daher bin ich etwas "langsamer".
Ich werde jetzt den Programmcode mal versuchen zu entrümpeln und aufzuräumen. Deine while-Schleife einbauen und hoffen dass ich den ";" Fehler finde.

Wird wohl ein paar Tage dauern, da ich schon wieder in der Arbeit bin - ABER - gut Ding braucht Weile!
Danke für eure Hilfe und Geduld :toll:

lg
Schlucki


----------

