VB: Problem mit Boolean

NitroTurboRatte

Lieutenant
Registriert
Juli 2007
Beiträge
577
Hallo Leute,
hier erstmal der Code:
Dim jug As String
Dim bool As Boolean

Console.WriteLine("Sind Sie unter 18 Jahre alt? (J/N)")
jug = Console.ReadLine
If jug = "J" & "j" Then
bool = True
ElseIf jug = "n" & "N" Then
bool = False
End If

If bool = True Then
Console.WriteLine("OK")
End If

Mein Problem ist es, dass bool trotz Eingabe j nicht den wert true bekommt.

Vielmals Danke im Voraus.
 
Hmm ich weiß nicht mehr genau wie das mit den Operatoren ist bei VB, aber verlangst du nicht, dass jug "J" UND "j" ist? Da müsste imo ein ODER hin, also in etwa so:
Code:
Dim jug As String
Dim bool As Boolean

Console.WriteLine("Sind Sie unter 18 Jahre alt? (J/N)")
jug = Console.ReadLine
If jug = "J" [COLOR="Red"]OR[/COLOR] jug = "j" Then
	bool = True
Else
	bool = False
End If

If bool = True Then
	Console.WriteLine("OK")
End If
Außerdem habe ich, wie du siehst, dein ElseIf rausgenommen, denn sonst hat bool keinen Wert falls der User etwas anderes eingibt als "J" oder "j".

mfg
 
Bin noch nicht ganz wach, aber ich wie es aussieht erwartet er das jug ="Jj" ist. Musst was an der Formel umstellen.

Edit: Zu spät^^

@Backslash
Mit or geht es nicht. Gibt einen Mismatch-Fehler. Ach verdammt. Sehe gerade es geht doch. Habe übersehen das du an das or ein jug="j" drangehangen hast. Tschuldigung. Wie gesagt. Kein oder falsche Kaffee, Chippo angehalten^^
 
Zuletzt bearbeitet von einem Moderator:
1.) & wird in VB zur Verkettung von Strings verwendet.

Ein Oder ist in VB einfach Or bzw. OrElse (OrElse ist ausschließlich zur logischen Veroderung, Or kann auch bitweise verodern)

2.) Ich würde das einfach mit einem select case machen:

select case jug
case "j","J"
bool=True

case "n","N"
bool=False

case else
'User darauf hinweisen, dass er j oder n eingeben soll
end select

Die Behandlung des Falls, dass ein ungültiges Zeichen eingegeben worden ist, muss auf jeden Fall gemacht werden. Was ist, wenn der die ganze Zeit versucht "JA" einzugeben oder Y für Yes und dann die Meldung bekommt, dass er nicht 18 ist.
 
1.) Ja er kann kein And/Or anwenden. Deshalb lernt er es ja gerade und das Programm schaut mir ziemlich nach Hausübung aus.

2.) Wer heute noch ernsthaft neue Programme mit Basic schreibt, dem ist wirklich nicht mehr zu helfen. Sogar VB6 ist alter Mist, den man vergessen sollte. Dasselbe gilt für Assembler, was vielleicht bei 0,001% des Codes Sinn macht. Wer heute anfängt zu programmieren, sollte sich zwingen mit Dingen wie Objektorientierung, Exceptions etc. beschäftigen. Das Zeug, muss ja später auch noch wer warten können.
 
select macht hier imo keinen Sinn, bei solchen Abfragen nehme ich eigentlich immer ein if (YES) {} else {}. Das lohnt sich für 2 Fälle bei einer JA/NEIN Frage doch einfach nicht.
So sind mit minimalem Code gleich alle Fälle behandelt. Dass J/j/... eingegeben werden soll ist ja schon durch die vorhergehende Ausgabe gesagt.
 
JA, danke euch allen vielmals.
Problem gelöst.
 
Zurück
Oben