PDA

View Full Version : [FRAGE] - Fehlermeldung falls falscher string eingegeben wird


luki
19-05-2004, 15:41
Hallihallo!

Hab wiedermal ne frage:

Lese in meinem Programm verschiedene strings ein (SPX, SPY, D, spx, spy, d).
Für alle anderen Strings muss natürlich eine Fehlermeldung ausgegeben werden. nur wie?

ich habs so probiert: if (input != ("SPX" || "spx" ||......usw.)

aber das funktioniert nicht... kann mir da wer weiterhelfen?? is glaub ich nicht so schwer, komm aber trotzdem grad nicht drauf..

Danke im voraus! mfg, Luki

rogov
19-05-2004, 16:19
Versuchs mit equals

luki
19-05-2004, 16:34
Versuchs mit equals

gibts auch ein "nicht equals"?

Bruno
19-05-2004, 16:43
naja mach eine equals-abfrage und setz ein "!" davor. ein rufzeichen ist das zeichen für eine negation. das ergibt dann unterm strich ein not-equals ;)

luki
19-05-2004, 16:49
naja mach eine equals-abfrage und setz ein "!" davor. ein rufzeichen ist das zeichen für eine negation. das ergibt dann unterm strich ein not-equals ;)

d.h. ich schreib einfach input.!equals ...... ?
so einfach? :ahhh:

Bruno
19-05-2004, 18:35
nein. du schreibst !(input.equals...)

gelbasack
19-05-2004, 19:48
if (input != ("SPX" || "spx" ||......usw.) -> if !(input = ("SPX" || "spx" ||......usw.)

jeuneS2
19-05-2004, 20:07
if (input != ("SPX" || "spx" ||......usw.) -> if !(input = ("SPX" || "spx" ||......usw.) http://hades.gothic.at/iforum/images/smilies/ahhh.gif
Ich würds mit if (!(input.equals("SPX") || input.equals("spx") || ... ) oder alternativ mit if (!input.equals("SPX") && !input.equals("spx") && ...) probieren...

JohnFoo
20-05-2004, 09:06
if (input != ("SPX" || "spx" ||......usw.) -> if !(input = ("SPX" || "spx" ||......usw.)

Dieser Code ist kompletter Müll. Schon jemals davon gehört, dass man Strings mit String.equals() vergleicht, nicht mit == (Vergleichsoperator)? Und bitte schon gar nicht mit = (Zuweisungsoperator)! Lern bitte erst die Basics, bevor du hier was postest.

gelbasack
20-05-2004, 13:13
Dieser Code ist kompletter Müll. Schon jemals davon gehört, dass man Strings mit String.equals() vergleicht, nicht mit == (Vergleichsoperator)? Und bitte schon gar nicht mit = (Zuweisungsoperator)! Lern bitte erst die Basics, bevor du hier was postest.

Irks, hast du leider recht.
if(!(input == ("SPX" || "spx" ||......usw.)
wäre es gewesen, nicht genau hingesehen...

Aber mag mir vielleicht jemand einfach mal kurz sagen, wieso .equals und nicht Vergleichsoperator? Funktionieren tut's ja so fein...
Und wenn man mal nen Fehler macht, braucht man nicht gleich des Boards verwiesen und Basics lernen geschickt werden?

wolk
20-05-2004, 21:31
equals

public boolean equals(Object anObject)
Compares this string to the specified object. The result is true if and only if the argument is not null and is a String object that represents the same sequence of characters as this object.

Overrides:
equals in class Object
Parameters:
anObject - the object to compare this String against.
Returns:
true if the String are equal; false otherwise.




To compare Strings for equality, don't use ==. The == operator checks to see if two objects are exactly the same object. Two strings may be different objects, but have the same value (have exactly the same characters in them). Use the .equals() method to compare strings for equality. Similarly, use the .compareTo() method to test for unequal comparisons.

rck
21-05-2004, 03:39
Lese in meinem Programm verschiedene strings ein (SPX, SPY, D, spx, spy, d).
Für alle anderen Strings muss natürlich eine Fehlermeldung ausgegeben werden. nur wie?

JohnFoo: Ja, grundsätzlich schon basic, das Thema. Doch irgendwie waren wir ja alle mal Anfänger, oder?

Ich tät das ganze ein bisserl anders lösen. Tu Dein Zeug zB in eine ArrayList rein und schau dann, ob der zu prüfende String in der ArrayList drinnen ist.

Beispiel (ungeprüft, hab schon länger nicht mehr JAVA programmiert):


import java.util;

class bumsti() {
ArrayList checklist;

bumsti() {
checklist=new ArrayList();

checklist.add("SPX");
checklist.add("spx");
/* und sämtlichen weiteren Müll */
}

boolean istErDrinnen(String s) {
return(checklist.contains(s));
}
}


Doch der Überschmäh kommt erst! Wenn Du alle zu prüfenden Wörter in einer zweiten ArrayList drinnen hast, brauchst Du nur ein containsAll() zu machen. Das schaut dann ungefähr so aus:


boolean sindSieDrinnen(ArrayList al) {
return(checklist.containsAll(al));
}


Schon cool, dieses JAVA-Zeugs. Zusammengefasst:


if(!sindSieDrinnen(meine eingelesenen strings))
System.out.println("Dumm gelaufen!\n");


Vielleicht fällt ja wem eine schönere Lösung ein... // René

JohnFoo
21-05-2004, 13:28
JohnFoo: Ja, grundsätzlich schon basic, das Thema. Doch irgendwie waren wir ja alle mal Anfänger, oder?
Ist schon richtig. Ich denke aber, dass man nur Antworten sollte, wenn die Antwort stimmt. luki ist Anfänger und vertraut dann auf die geposteten Lösungen, wird mit falschem Code nur verwirrt.
Entschuldigung an gelbasack, wenn's zu grob war.

JohnFoo
21-05-2004, 13:37
Habe noch etwas vergessen: String-Überprüfung kann man auch mit regulären Ausdrücken lösen. Von regulären Ausdrücken lernt man, soviel ich weiß, in "Grundzüge der Informatik". In Java benutzt man dazu die Klasse java.util.regex.Pattern (http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html).

Kommt natürlich darauf an, was man vergleichen will, manchmal können Reguläre Ausdrücke etwas übertrieben sein. Aber bevor man mit 10 if-Abfragen eh ziemlich ähnliche Ausdrücke überprüft, greift man besser zu einem Regulären Ausdruck

rck
21-05-2004, 13:56
Kommt natürlich darauf an, was man vergleichen will, manchmal können Reguläre Ausdrücke etwas übertrieben sein. Aber bevor man mit 10 if-Abfragen eh ziemlich ähnliche Ausdrücke überprüft, greift man besser zu einem Regulären Ausdruck

...stimmt. Ein (ich kenn jetzt die Funktionen nicht und bin zu faul zum Nachschauen) if(regexp(mystring, "(spx|SPX)")) ist sicher kürzer als das ArrayList-Konstrukt. Kommt wie so oft auf den Einsatzzweck an // René

gelbasack
21-05-2004, 14:01
Ist schon richtig. Ich denke aber, dass man nur Antworten sollte, wenn die Antwort stimmt. luki ist Anfänger und vertraut dann auf die geposteten Lösungen, wird mit falschem Code nur verwirrt.
Entschuldigung an gelbasack, wenn's zu grob war.

Gut, hast schon Recht, besonders genau habe ich mir meine Lösung nicht angesehen, .equals war mir wirklich neu - naja, wie kommt man selbst drauf, dass == nicht okay ist? ;)
Danke.

rck
21-05-2004, 14:18
naja, wie kommt man selbst drauf, dass == nicht okay ist?

Naja, mit "onboard" JAVA-Mitteln nicht. Doch es gibt eine Art Faustregel: C++ unterstützt "Operator-Overloading". Das heißt, man kann definieren, was zB "==" für einen Datentyp macht.

JAVA und C wiederum nicht. Wenn man also ein "==" macht, hat das mit dem Datentyp a priori nichts zu tun sondern kann (bestenfalls) ein Pointervergleich (befinden sich beide Werte an der gleichen Speicherstelle?) sein. Für einen Vergleich auf Datentyp-Basis braucht man demnach was anderes.

Die Auswahl ist gerade bei JAVA riesig... // René

luki
24-05-2004, 10:36
Sorry dass ich mich so spät für eure Hilfe bedanke, aber mein PC ist voll im arsch und lässt sich jetzt nichtmal mehr einschalten (d.h. einschalten kann ich ich ihn schon aber dann passiert nichts mehr..). Auf jeden Fall hab ich warten müssen bis ich wieder in der Arbeit bin um ins forum zu gucken :rolleyes:

derbrain
31-05-2004, 22:45
Irks, hast du leider recht.
if(!(input == ("SPX" || "spx" ||......usw.)
wäre es gewesen, nicht genau hingesehen... leider auch nicht http://hades.gothic.at/iforum/images/smilies/rolleyes.gif. der ODER-operator darf NUR zwischen booleschen ausdrücken stehen. denn was bitteschön ist das ergebnis von (3 || 4)???


checklist=new ArrayList();
checklist.insert("SPX");
...
der befehl fürs hinzufügen von elementen zu einer ArrayList lautet add(), nicht insert() http://hades.gothic.at/iforum/images/smilies/wink.gif

gelbasack
01-06-2004, 12:00
leider auch nicht http://hades.gothic.at/iforum/images/smilies/rolleyes.gif. der ODER-operator darf NUR zwischen booleschen ausdrücken stehen. denn was bitteschön ist das ergebnis von (3 || 4)???

der befehl fürs hinzufügen von elementen zu einer ArrayList lautet add(), nicht insert() http://hades.gothic.at/iforum/images/smilies/wink.gif

Vergesst es einfach... bitte! :distur: ist ja wirklich grauslich...

rck
01-06-2004, 16:04
der befehl fürs hinzufügen von elementen zu einer ArrayList lautet add(), nicht insert() http://hades.gothic.at/iforum/images/smilies/wink.gif

Hab schon Buße getan und unter http://www.kiesler.at/article38.html ein ArrayList-Tutorial zusammengestellt. Mit add und nicht insert :verycool: // René!