嵌套for循环对比字符数组问题:验证输入是否为十进制数
问题分析与代码修正
你的代码存在三个核心问题,导致无法正确判断输入是否为十进制数字:
循环边界错误
内层循环条件是k < 9,但十进制数字数组s包含10个元素(0-9),这会漏掉对'9'的检查,应改为k < s.length来遍历整个数组。逻辑判断完全颠倒
你当前的逻辑是「只要字符和数组中某一个元素不相等,就标记为false」,但正确逻辑应该是「只有当字符和数组中所有元素都不相等时,才判定为非十进制数字」。比如输入字符是'0',当k=1时c[i] != s[k]成立,t被设为false,后续k=0时即使匹配,也不会把t改回true,最终结果永远错误。没有提前终止检查
一旦发现某个字符不是十进制数字,没必要继续遍历剩余字符,直接返回false能提升效率。
修正后的代码(自定义数组实现)
public static boolean isDecimal(String number) { char[] decimalDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; char[] inputChars = number.toCharArray(); for (char c : inputChars) { boolean isDigit = false; // 检查当前字符是否属于十进制数字 for (char digit : decimalDigits) { if (c == digit) { isDigit = true; break; // 找到匹配项,立即终止内层循环 } } if (!isDigit) { return false; // 存在非十进制字符,直接返回false } } return true; // 所有字符均为十进制数字 }
更简洁的实现(利用Java内置方法)
Java提供了Character.isDigit()方法,可以直接判断字符是否为十进制数字,无需手动维护数字数组:
public static boolean isDecimal(String number) { for (char c : number.toCharArray()) { if (!Character.isDigit(c)) { return false; } } return true; }
内容的提问来源于stack exchange,提问作者cordesjan
相关产品推荐
相关产品推荐

