Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如果条件被忽略_Vb.net_If Statement_While Loop_Conditional Statements_Ignore - Fatal编程技术网

Vb.net 如果条件被忽略

Vb.net 如果条件被忽略,vb.net,if-statement,while-loop,conditional-statements,ignore,Vb.net,If Statement,While Loop,Conditional Statements,Ignore,我目前正在为一个名为Caladon的游戏编写代码。 游戏是关于第一个玩家说出单词,下一个玩家必须说出以前一个单词的最后两个字母开头的单词。 当我想检查这个单词包含的字母是否少于3个或是否为空时,就会出现问题 在第一个循环中,当填充列表仍然为空时,一切正常。 但是,在我键入例如5个或更多单词并键入一个字母或将其留空后,它将打印两条“You's lost!”消息,这意味着if语句中的代码将被忽略,因为它将bool变量更改为false,并且应该退出While循环 我曾尝试将ok=false替换为Exi

我目前正在为一个名为Caladon的游戏编写代码。
游戏是关于第一个玩家说出单词,下一个玩家必须说出以前一个单词的最后两个字母开头的单词。
当我想检查这个单词包含的字母是否少于3个或是否为空时,就会出现问题

在第一个循环中,当填充列表仍然为空时,一切正常。
但是,在我键入例如5个或更多单词并键入一个字母或将其留空后,它将打印两条
“You's lost!”
消息,这意味着if语句中的代码将被忽略,因为它将bool变量更改为false,并且应该退出While循环

我曾尝试将
ok=false
替换为
Exit While
,条件是检查单词包含的字母是否少于3个,并且有效,但我想了解问题出在哪里

代码也可以在此处找到:

模块1
副标题()
卡拉顿()
端接头
亚卡拉顿()
Const msg As String=“你输了!”
作为新列表的Dim列表(字符串)
字串
作为整数的Dim i
将ok设置为布尔值
ok=正确
虽然可以
控制台。写入(“插入单词:”)
word=Console.ReadLine()
列表。添加(word)
如果单词长度<3或单词=”,则
控制台写入线(msg)
ok=错误
如果结束
如果list.Count>1,则“跳过检查第一个单词”
对于列表中的i=0。计数-2
如果word.ToLower=lista(i).ToLower那么
控制台写入线(msg)
ok=错误
如果结束
下一个
如果LastTwo(单词)=“ka”或LastTwo(单词)=“nt”,则
Console.WriteLine(“KALADONT!你赢了!”)
ok=错误
如果结束
如果FirstTwo(list.Last)LastTwo(list(list.Count-2)),那么
控制台写入线(msg)
ok=错误
如果结束
如果结束
结束时
检查()
端接头
函数FirstTwo(ByVal s1作为字符串)作为字符串
向左返回(s1.ToLower,2)
端函数
函数lastwo(ByVal s2作为字符串)作为字符串
返回权(s2.ToLower,2)
端函数
子检查()
暗符号为字符
Console.WriteLine(“是否要开始新游戏?y\n”)
sign=Console.ReadLine()
如果符号=CChar(“y”),则
控制台清除()
卡拉顿()
ElseIf sign=CChar(“n”),则
出口接头
如果结束
端接头
端模块

有解决方案吗?

即使将“确定”设置为false,它仍将进入另一个循环,您需要使用Else

        If word.Length < 3 Or word = "" Then
            Console.WriteLine(msg)
            ok = False
        Else If list.Count > 1 Then 'Skip checking first word
如果word.Length<3或word=”“,则
控制台写入线(msg)
ok=错误
否则,如果list.Count>1,则“跳过检查第一个单词”
另一种方法是使用End-while退出while

        If word.Length < 3 Or word = "" Then
            Console.WriteLine(msg)
            ok = False
            Exit While
        End If
如果word.Length<3或word=”“,则
控制台写入线(msg)
ok=错误
退出时
如果结束

您必须在此处发布代码,而不是链接(或图片)。如果您想在满足某个条件时退出循环,则可以在退出时使用exit语句。将布尔变量ok设置为false不会阻止循环继续,直到您到达终点,同时也会执行其他测试
        If word.Length < 3 Or word = "" Then
            Console.WriteLine(msg)
            ok = False
            Exit While
        End If