java - 如何让do语句重新启动?

标签 java validation

我真的不知道如何解释这一点,但我们开始吧。

我正在测试一些我必须制作的更大程序的东西。在程序中,我必须验证用户的输入,看看它是否被接受为有效答案。

我有代码,它会显示输入是否无效,但如果我尝试输入另一个字母,代码就会崩溃并出现以下错误:

Enter a letter:
f
Your answer is not valid.
A
Enter a letter:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(String.java:695)
    at example.main(example.java:18)

这是代码:

import java.util.Scanner;

public class example
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);


        boolean UserInput;

        do
        {
                char user_answer = 0;


                System.out.println("Enter a letter:");
                user_answer=input.nextLine().charAt(0);

                if ( user_answer == 'A')
                {

                    UserInput = true;
                }
                else if (user_answer == 'B')
                {

                    UserInput = true;
                }
                else if (user_answer == 'C')
                {

                    UserInput = true;
                }
                else if (user_answer == 'D')
                {

                    UserInput = true;
                }
                else
                {
                    System.out.println("Your answer is not valid.");
                    UserInput = false;
                    input.next();
                }


        }

        while   (!UserInput);


    }

}       

最佳答案

删除input.next()或将其更改为input.nextLine() 发生的情况是 input.next() 将捕获您输入的 A。然后,您返回到 do 的开头并重新开始,执行 input.nextLine(),但您已经按 enter 输入 A,并且 Ainput.next() 消耗。

关于java - 如何让do语句重新启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35076390/

相关文章:

java - 客户端 => 服务器与 Vaadin + GWT 通信

java - Glassfish 不创建 JDBC 资源

javascript - 如何使用 java 脚本验证 php 表单,该表单位于我网站的每个页面上

asp.net - 在局部 View 中强制使用无 Html.BeginForm/Ajax.BeginForm 的无障碍语法

c - scanf验证C

java - 如何解析html和css来理解页面的布局(java)

java - 如何使用链接表在 Hibernate 中映射多对多列表

java - 具有多个条件的 for 循环

asp.net-mvc - MVC 日期时间验证失败

validation - 使用 Spring @Valid 注释验证部分模态