java - 用于查找连续字符串中的两个字符是否为数字的程序在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;
}
}
解决方案
即使您已经找到了结果,您仍会继续检查输入字符串。正如@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;
}
更新:事实上,片段中有一个错误,因为它从循环中返回得太早了。现在修好了。
推荐阅读
- mit-scratch - Scratch - 如何停止程序,但不消灭
- python - 如何在 python 中打印此 json 列表的其他部分?
- java - 在 .txt 文件中保存一个巨大的矩阵会弄乱换行符
- twitter-bootstrap - Bootstrap 移动菜单是一个要点列表?
- java - Java:访问要在条件语句中使用的不同类中的不同变量
- silverstripe-4 - 有没有更好的方法在我的页脚中为我的轮播数据对象编写函数
- compression - 我如何计算这台相机的网络负载?
- javascript - GooglePay API 支付令牌未解密
- python - 如何从每个节点提取sklearn决策树规则到pandas布尔条件?
- php - PHP 无法上传大于 ~ 6500px 的图片(文件大小无关紧要)