如何防止Java中的整数输入?

mat*_*ski 6 java

我试图获取我的代码,以防止用户输入有一个数字.

基本上我希望代码执行如下操作:

  1. 请求输入
  2. 接收输入
  3. 测试输入是否包含数字(例如:5matt vs matt)
  4. 如果包含我想要的数字 System.out.println("Error: please do not input a number");

继承人(以及为什么它不是一个重复的问题):我不能使用我们还没有学到的循环或其他语句.到目前为止,我们学到的唯一真实陈述是if/else/else if语句.这意味着我不能使用for循环,就像一些答案所暗示的那样.虽然他们是很好的答案和工作,但我会失去使用它们的积分.

System.out.println("Please input the first name: ");    
String name1 = in.next();
System.out.println("Please input the second name: ");
String name2 = in.next();
System.out.println("Please input the third name: ");
String name3 = in.next();

name1 = name1.substring(0,1).toUpperCase() + name1.substring(1).toLowerCase();
name2 = name2.substring(0,1).toUpperCase() + name2.substring(1).toLowerCase();
name3 = name3.substring(0,1).toUpperCase() + name3.substring(1).toLowerCase();
Run Code Online (Sandbox Code Playgroud)

我已经有了这个,但我无法弄清楚如何测试输入是否只包含字母.

Zab*_*uza 3

好吧,有很多方法可以解决这个问题。一件好事是使用正则表达式(文本匹配的东西)。但看来你应该只使用非常基本的比较方法。因此,让我们做一些非常基本且易于理解的事情:我们迭代输入的每个字符并检查它是否是数字。

String input = ...
// Iterate over every character
for (int i = 0; i < input.length(); i++) {
    char c = s.charAt(i);

    // Check whether c is a digit
    if (Character.isDigit(c)) {
        System.out.println("Do not use digits!");
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码非常简单。但即使找到了数字,它也会继续检查。您可以使用辅助方法来防止这种情况,然后return从中进行 ing:

public boolean containsDigit(String text) {
    // Iterate over every character
    for (int i = 0; i < input.length(); i++) {
        char c = s.charAt(i);

        // Check whether c is a digit
        if (Character.isDigit(c)) {
            return true;
        }
    }
    // Iterated through the text, no digit found
    return false;
}
Run Code Online (Sandbox Code Playgroud)

在你的主程序中你可以这样称呼它:

String input = ...
if (containsDigit(input)) {
   System.out.println("Do not use digits!");
}
Run Code Online (Sandbox Code Playgroud)