当前位置: 首页 > 知识库问答 >
问题:

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

袁智明
2023-03-14

我试图获取代码,以防止用户输入中包含数字。

基本上,我希望代码如下所示:

  1. 请求输入

关键是(为什么这不是一个重复的问题):我不能使用循环或其他我们还没有学会的语句。到目前为止,我们所学的唯一真正的语句是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();

我已经有了这个,但我不知道如何测试输入是否只包含字母。

共有3个答案

费学
2023-03-14

有几种方法可以做到这一点,其中包括:

  • 遍历字符串中的所有字符并检查它们中是否有任何一个是数字。
  • 检查字符串是否包含数字1、数字2、数字3等。
  • 使用正则表达式检查字符串是否包含数字。

(Java正则表达式)

蔚桐
2023-03-14

使用正则表达式过滤输入

str.matches(".*\\d.*")

有关更多信息,请参阅此链接

糜鸿风
2023-03-14

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

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!");
    }
}

这段代码非常简单。但即使找到了数字,它也会继续检查。您可以使用辅助方法防止这种情况,然后从中返回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;
}

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

String input = ...
if (containsDigit(input)) {
   System.out.println("Do not use digits!");
}
 类似资料:
  • 可能重复: 如何检查在Java中相乘两个数字是否会导致溢出? 假设我有一个Java类方法,它使用和操作。 如何确保中没有发生溢出? 我想我可以使用BigDecimal,也可以用“包装器”替换all and*,比如: 有没有更好的方法来确保Java方法中不会发生int溢出?

  • 问题内容: 我想禁用窗口大小调整。有任何想法吗? 问题答案: 您可以使用two-arg构造函数指定样式位。默认样式位是: 您实际上想排除该位。如果您要创建自己的: 如果要扩展,则可以通过覆盖来影响Shell样式位:

  • 问题内容: 使用不同的Java库执行数百万个HTTP请求,使我陷入困境: 这是功能。 我试图设置Apche Http Client,并在所有可能的超时(我希望)上超时,但仍然 (可能无限)挂起。如何摆脱它们? 挂断率大约是每10000个请求〜1(对10000个不同的主机),并且可能会永远持续下去(我已确认线程挂起在10小时后仍然有效)。 Windows 7上的JDK 1.8。 我的工厂: 我的工厂

  • 问题内容: 当我尝试将字符串转换为json时,Gson有一些奇怪的行为。下面的代码将字符串草稿转换为json响应。有没有一种方法可以防止gson将’.0加到所有整数值? 问题答案: 您是在告诉Gson,它正在寻找字符串到对象的映射列表,这实际上是在对对象的类型做出最佳猜测。由于JSON不能区分整数和浮点字段,因此 Gson必须将数字字段默认设置为Float / Double。 Gson的基本目的是

  • 我正在尝试将输入验证添加到一组三个 ,用户在其中输入数值。我面临的问题是,为了使计算正常工作,用户无法输入零作为输入字段之一,否则应用程序将崩溃。 我尝试实现以下操作以防止输入零并显示警告消息。我收到一条错误消息,指出“无法启动活动calcResult”,这是显示计算的活动。 这是错误日志的链接:http://pastebin.com/hDsabjR6 我从这里了解到,零值仍然在通过验证,但我不知

  • 问题内容: 我有一个看起来像这样的东西: 我的问题是s在垂直方向上会变得很大。我只希望它们对于一行来说足够高,因为这是用户可以在其中键入的全部内容。按钮很好(它们不会垂直扩展)。 有什么方法可以防止s扩展?我是Swing的新手,所以如果我做的所有事情都太糟糕了,请告诉我。 问题答案: