Portal > Foren > Java > Allgemeine Java-Programmierung > fehlermeldung bei if
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 23.02.2005, 10:47 Nach oben    #1
MrBrot
Gast
 
Beiträge: n/a
Standard fehlermeldung bei if

hei,

also ich bin neu in der javaprogrammierung habe bisher nur mit anderen sprachen gearbeitet. ich hab hier ein kleines programm und verstehe nicht warum es mit der if-anweisung probleme gibt, vielleicht weiss einer von euch rat?

if (beenden = false)
{
catch( Exception e )
{
System.out.println( "Unzulässige Eingabe");
}
}

die fehlermeldung ist:
java.lang.Error: Unresolved compilation problem:
Syntax error on keyword "if"; "finally" expected

bin gespannt auf eure ideen - danke
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:00 Nach oben    #2
Benutzer
 
Benutzerbild von ehli75
 
Registriert seit: 30.11.2004
Beiträge: 97
Standard

probiers mal mit if (beenden == false)

Und wieso hast du catch ohne try ? ... vielleicht liegts ja ach daran ... oder du hast nicht alles gepostet.
ehli75 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:04 Nach oben    #3
Benutzer
 
Registriert seit: 15.02.2005
Beiträge: 33
Standard

Zitat:
Zitat von MrBrot
[..]

if (beenden = false)
{
catch( Exception e )
{
System.out.println( "Unzulässige Eingabe");
}
}

die fehlermeldung ist:
java.lang.Error: Unresolved compilation problem:
Syntax error on keyword "if"; "finally"
[..]
Sende doch einmal den kompletten Code, dann kann man dir auch besser helfen.
__________________
No Sig
Entitaet ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:07 Nach oben    #4
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.481
Standard

Hallo,

also Du vergleichst nicht, sondern Du weist zu

"=" ist eine Zuweisung, z.B.
Code:
int zahl = 12;
Und "==" ist ein Vergleich, z.B.
Code:
if( zahl == 12 )
{
     // machwas
}
In Deinem Beispiel ist der Vergleich sogar gar nicht notwendig, da die IF-Anweisung im Kopf (also in den Klammern) einen bool'schen Ausdruck erwartet. Also entweder "true" oder "false".

Ein Beispiel:
Code:
int zahl = 12;

if( zahl == 12 )
{
       zahl = 2;
}
in Worten: "Wenn zahl gleich 12, dann mache weise zahl den Wert 2 zu."

Code:
zahl == 12
ist ein bool'scher Ausdruck, da dort entweder wahr(true) oder falsch(false) rauskommt

Du könntest in Deinem Beispiel also auch folgendes machen
Code:
boolean weiter = true;

if( weiter )
{
     // weitermachen
}
Warum habe ich die Variable jetzt "weiter" und nicht "beenden" genannt? Hm. Naja. Solange weiter == true ist geht es eben weiter. Das ist intuitiver als: "solange beenden == false ist geht es weiter".

Und da kommen wir zu einem Punkt, den ich da eventuell reininterpretiere ... wer weiß ..
Ich denke, dass Du eine Schleife braucht

Schau Dir mal die "while-Schleife" an

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:07 Nach oben    #5
MrBrot
Gast
 
Beiträge: n/a
Standard

hi,

erstmal danke für deine antwort.

also am "=" liegs nicht, dass hatte ich auch nur testhalber eingestezuz eigentlich stand da "!=".

das mit dem catch stammt von etwas früher im code. vielleicht sollte ich doch alles hier rein schreiben also:

public class euro1
{
final static double DMNACHEURO = 1/1.95583;
public static void main(String[] args)
{
boolean beenden = false;
do
{
String benutzereingabe;
double dm_betrag;
double euro_betrag;
// Verwendung des Ein-/Ausgabesystems von Java um Text von der
// Tastatur einzulesen
BufferedReader in = new BufferedReader( new InputStreamReader
(System.in ) );
try
{

System.out.println( "Bitte geben Sie einen DM-Betrag ein" );

// Einlesen der Benutzereingabe von der Tastaur in die
// String-Variable benutzereingabe
//benutzereingabe = "3";
benutzereingabe = in.readLine();
if( benutzereingabe.equals( "b" ) )
{
beenden = true;
}

// Umwandlung des Textes in benutzereingabe in eine
// Gleitkommazahl, die in der Variablen dm_betrag landet
dm_betrag = Double.valueOf( benutzereingabe ).doubleValue();
euro_betrag = dm_betrag * DMNACHEURO;
System.out.println( dm_betrag + " in DM sind " + euro_betrag + " in Euro. ");
}
if (beenden == false)
{
catch( Exception e )
{
System.out.println( "Unzulässige Eingabe");
}
}
}
while(beenden != true);
}
}
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:17 Nach oben    #6
kron
Gast
 
Beiträge: n/a
Standard

der vergleichende operator in java lautet "=="
wenn du "=" nimmst weist du der variablen "beenden" den wert "false" zu. der ausdruck insgesamt ergibt dann immer "true" (eine zuweisung von typgleichen operatoren ist afaik immer wahr)

der fehler scheint mir hier aber auch eher das catch zu sein. was bezweckst du denn damit? normal fämngt man exceptions wie folgt:
Code:
try {
   // kritischer code
} catch (Exception ex) {
   // fehlerbehandlung
}
vielleicht wolltest du etwas in der art:
Code:
if ( beenden == false ) {
   throw new Exception("Unzulässige Eingabe");
}
allerdings solltest du dir denke ich die exceptionbehandlung unter java nocheinmal näher ansehen
in obigem beispiel müsstest du die exception dann dennoch irgendwo fangen. einzige ausnahme ist imho dir RuntimeException - hier sind sich aber eigentlich alle einig das diese nicht benutzt werden sollte da sie der rt umgebung gehört. sinnvoll ist es manchmal eine eigene Klasse CriticalException (oä.) von der RuntimeException abzuleiten um schwerwiegende, unbehebbare Fehler auszuweisen.

edit:
ok, hab jetzt erst deinen code gesehen.
dein fehler ist wohl das du den try .. catch block nicht auseinander reissen darfst so wie du es gemacht hast. soll heissen der catch block darf nicht innerhalb einer if anweisung stehen .. deine klammersetzung verwirrt mich - da wird man ja ganz kirre ^^
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:31 Nach oben    #7
MrBrot
Gast
 
Beiträge: n/a
Standard

Ah, danke das hilft mir schon mal weiter...
allerdings verstehe ich nicht, wie man dann gescheit mit try und catch arbeiten soll :confused:.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:34 Nach oben    #8
MrBrot
Gast
 
Beiträge: n/a
Standard

wenn ich das ganze ohne exception-abfangen schreibe wie ersetzte ich dann das "in.readLine()".
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:34 Nach oben    #9
kron
Gast
 
Beiträge: n/a
Standard

zum beispiel so

Code:
String[] sa = new String[] {
  "empfaengerName", empfaengerName,
  "empfaengerEmail", empfaengerEmail,
  "senderEmail", senderEmail,
  "kurznachricht", kurznachricht,
  "leistungsName", lei.getFullName(),
  "leistungsID", tk.getValue("id")
};
try {
  tk.sendPatternEmail("empfehlenLeistung", empfaengerEmail, sa);
  ok = true;
} catch (Exception ex) {
  errorMsg = "Es ist ein Fehler beim versenden der eMail aufgetreten.";
}
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:37 Nach oben    #10
MrBrot
Gast
 
Beiträge: n/a
Standard

bzw. wenn ich es drin lasse wie verhindere ich dann, das die eingabe "b" zur ausgabe der fehlermeldung führt?
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:38 Nach oben    #11
kron
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von MrBrot
wenn ich das ganze ohne exception-abfangen schreibe wie ersetzte ich dann das "in.readLine()".
garnicht. du musst diese exception abfangen.
aber schreib den try..catch block halt um den kritischen code (also die zeile welche im schlimmsten fall eine exception auslöst).
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 11:39 Nach oben    #12
kron
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von MrBrot
bzw. wenn ich es drin lasse wie verhindere ich dann, das die eingabe "b" zur ausgabe der fehlermeldung führt?
wieso sollte die eingabe von b eine exception auslösen? :confused:
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 12:36 Nach oben    #13
mic_checker
Gast
 
Beiträge: n/a
Standard

Je nachdem wie er seinen Code jetzt umgebaut hat (weiss ja nicht welche Änderungen er alles vorgenommen hat) , könnte es sein das er "b" eingibt , danach parst er den String in Double und das führt zu Exception, vorrausgesetzt er fängts nicht vorher mit ner Bedingung ab.

Das gilt dann aber nicht nur für b , sondern für alle Buchstaben im Generellen.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2005, 13:04 Nach oben    #14
`B
Benutzer
 
Benutzerbild von `B
 
Registriert seit: 05.07.2004
Beiträge: 95
Standard

kurz am ende weiß nicht ob es hilft.

Du überprüfst am Anfang ja

if(beenden != false){
} else {
}

Auf Deutsch ob die boolean beenden einen Wahrheitswert besitzt. Um Dies zu Überprüfen kannst du dich auch kurz fassen und einfech

if(beenden){
} else {
}

schreiben. Halte code immer so kurz wie nötig. Eine vernünfigte Methode reicht nie über eine Bildschirmlänge hinaus.
__________________
`B ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[svn] Fehlermeldung: "PROPFIND request failed ... " Corvin Tools, Server, Betriebssysteme 1 20.08.2007 16:27
MySQL Fehlermeldung: Your query requires a full tablescan ... Chr!s Datenbanken 12 31.07.2006 21:45
Fehlermeldung bei include einer bestimmten Datei Bookworm PHP-Programmierung 12 10.04.2006 18:50
Fehlermeldung bei ausführen janis Allgemeine Java-Programmierung 35 25.06.2005 16:00
JBuiderX + Folgende Fehlermeldung Borusse-KLE Tools, Server, Betriebssysteme 0 13.01.2005 21:51


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:50 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44