首页 > 解决方案 > 用于查找连续字符串中的两个字符是否为数字的程序在java中不起作用

问题描述

我有下面的代码,我想从键盘输入并显示输入是否连续包含 2 个数字。如果是这样,我想false在控制台中打印出来,否则true. 它工作正常,除非输入的前 2 个字符是数字。在那种情况下,我仍然进入true控制台。谁能明白为什么?提前致谢

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System. in );
        System.out.println("Enter:");
        String s = sc.nextLine();
        if (checkDigit(s)) {
            System.out.println("false");
        } else {
            System.out.println("true");
        }
    }
    public static boolean checkDigit(String s) {
        boolean b = true;
        char[] c = s.toCharArray();
        for (int i = 0; i < c.length - 1; i++) {
            if (Character.isDigit(c[i]) && Character.isDigit(c[i + 1])) {
                b = true;
            } else {
                b = false;
            }
        }
        return b;
    }
}

标签: javadigits

解决方案


即使您已经找到了结果,您仍会继续检查输入字符串。正如@Stultuske所指出的,您会覆盖变量的值,因此如果最后两个字符是数字b,您的代码只会返回。true

如果连续有两位数,则需要从循环中返回:

 public static boolean checkDigit(String s) {
    char[] c = s.toCharArray();

    for(int i=0; i < c.length-1; i++) {
        if(Character.isDigit(c[i]) && Character.isDigit(c[i+1])) {
            return true;
        }
    }

    return false;
 }

更新:事实上,片段中有一个错误,因为它从循环中返回得太早了。现在修好了。


推荐阅读