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

使用For循环识别字符串中的数字

郭元凯
2023-03-14

我正在尝试识别使用for循环提供的输入中是否有数字。我已经尝试了很长时间,甚至在Google的第二页上进行了搜索。我决定寻求一些帮助。到目前为止,我已经尝试了以下内容:

for (c = 0 ; c < 6 ; c = c++)
{
    c = input.charAt (0);

    if (Character.isDigit (c))
    {
        System.out.println ("Input must only contain letters.");
        return;
    }

}

基本上,我试着扫描每个字母,然后分别测试它们是字母还是数字,这就是我遇到的问题,因为只扫描第一个字母。我也试着在循环中输入“c”。我怎么扫描每封信?

编辑:哎呀,那是个错误。我把它改成c=c 1,但它不起作用,我把它改回c,但它最终变成了c=c。

共有3个答案

吴胜涝
2023-03-14

您不能同时使用c作为索引和值。试试这个:

for (int i = 0; i < 6; i++) {
    c = input.charAt(i);
    // ...
}
唐裕
2023-03-14

使用正则表达式和Java的模式类:

boolean b = Pattern.matches("[0-9]+", input);

如果您不熟悉正则表达式,[0-9]将在字符串中找到0到9之间任何数字的一个或多个匹配项(“运算符”)。然后,您需要做的就是检查变量b是true(表示搜索找到了一个数字)还是false(字符串中没有数字)。

此外,我注意到您正在以以下方式增加循环变量c:

c = c++

这个操作实际上对c的值没有影响。赋值语句中变量后的运算符表示“在您将变量的当前值分配给另一个变量后,将变量的值增加一个。然后发生的事情是您将c的值分配给它自己,将c增加一个。这个递增的值永远不会保存回c,所以您的循环可能会无限继续。增加循环变量的正确方法如下:

for (c = 0; c < 6; c++) {
    // ...
}
燕成双
2023-03-14

这一行:c=input.charAt(0);有两个问题。

首先,您可能不希望每次执行循环时都重置迭代值。因此,可以将其更改为不同的变量,如下所示:

char chr = input.charAt(....

其次,您只获取第一个char,因为您将0发送到. charAt()函数。试试这个:

char chr = input.charAt(c);
if (Character.isDigit (chr))
{
    System.out.println ("Input must only contain letters.");
    return;
}
 类似资料:
  • 问题内容: 我必须读取字符串并仅使用for循环输出每个字母的频率。讲师暗示我需要使用两个循环,并向我们提供了以下代码: 编辑: 我想我会死于这个问题,并发布一年前找到的解决方案,原因是该问题的点击率很高。 问题答案:

  • 问题内容: 我正在尝试检测Java字节码。 我想识别 java循环 的 进入和退出 ,但是我发现识别循环非常具有挑战性。我花了很多时间研究 ASM 和 开源反编译器 (我一直认为自己必须始终解决此问题),但是我的想法很短。 我正在扩充/扩展的工具正在使用ASM,因此理想情况下, 我想知道如何通过ASM在Java中检测不同循环结构的进入和退出 。但是,我也欢迎关于一个好的开源反编译器的建议,因为显然

  • 这里有两个相同的代码,唯一的区别是我在第一个代码中使用的是在for循环内初始化的字符串,另一方面我使用的是在for循环外初始化的字符串,但得到的答案仍然不同 在for循环内初始化的字符串: 输出为以下形状: 在for循环外部初始化的字符串: 输出为以下形状: 我真的很困惑正在发生的事情,提前谢谢你。

  • 问题内容: 因此,我想为字符串中的每个字符进行迭代。 所以我认为: 但出现编译器错误: 我怎样才能做到这一点? 问题答案: 为,每每最简单的方法在一个是使用: 这为您提供了for- each构造的简洁性,但是不幸的是(这是不可变的)必须执行防御性复制才能生成(是可变的),因此要付出一定的代价。 从文档中: [ 返回] 一个新分配的字符数组, 其长度是此字符串的长度,并且其内容已初始化为包含此字符串

  • 我有一个包含字符串值的< code>arrString列表。我需要检查字符串< code>lookupvalue。Longname是否存在于C#中使用for循环的列表中。