java - 如何使用不同的类进行玩家输入验证

标签 java validation

游戏.java

public void getLetter() {
    System.out.print("Give a letter: ");
    guessedLetter = ((PlayerHuman) player1).letterGuessing();   
    }   
}

PlayerHuman.java

public char letterGuessing() {
    inputString = scanner.nextLine();
    if(inputString.isEmpty()) {
        //need code here, also check if its only a-z
    }
    inputChar = inputString.toUpperCase().charAt(0);
    return inputChar;
}

我有这个代码。在 getLetter() 中,它请求一个字母,然后调用 letterGuessing() 方法。在 letterGuessing() 方法中,它需要在返回字母之前检查输入是否不为空且只有字母表中的字母。

如果它是空的或者不是字母,则需要再次执行整个 getLetter() 方法。就像向该系统索取一封新信一样。

我应该怎么做?

最佳答案

您可以使用以下逻辑:

public char letterGuessing() {
    String inputString;
    while (true) {
        System.out.print("Give a letter: ");
        inputString = scanner.nextLine();
        if (inputString != null && inputString.length() > 0 && Character.isLetter(inputString.charAt(0))) {
            break;
        }
    }

    return inputString.toUpperCase().charAt(0);
}

这里,while-loop 不会被破坏,除非提供的 inputString 是一个字母。在此之前,if 中还进行了其他检查,以避免任何 NPE

此外,我已将 System.out.print("Give a letter: "); 行移至方法 letterGuessing() 中,以便更好地理解。

您可以相应地进行调整。

关于java - 如何使用不同的类进行玩家输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52909151/

相关文章:

Java\JSON : UnrecognizedPropertyException: Unrecognized field "CefMessagesGenerators" error

java - 如何在 JSP 中显示数据库中的图像?

validation - 如何避免在域层和应用层之间重复验证逻辑?

ruby-on-rails - 避免 `save!` on Has Many Through Association

java - 适用于 Java 9 的 JDBC 和 MS SQL Server 驱动程序

java - 从 ActionPerformed 中的另一个类导入代码

java - 如何获得直线和多边形的交点?

validation - 如何验证温莎城堡的配置

c - 如何从用户那里得到一个号码

jquery - 使用 Bootstrap 和表单验证 - 在输入字段的右侧获取刻度图像