如何不使用字符串判断输入整数是否包含指定数字(Java开发疑问)
解决方案:判断整数是否包含指定数字的Java方法
嘿,我看你已经搭好了部分代码框架啦,不过还有几个细节可以完善,咱们还能把逻辑优化得更简洁直接。我来帮你把这个程序补全,顺便给你拆解下关键的实现细节~
首先得理清楚方法的职责:contains方法应该只专注于判断传入的整数num里是否包含指定数字x,别在这个方法里创建Scanner获取输入,输入逻辑放在main方法里会更合理,这样判断方法也能方便复用。
下面是完整的可运行代码:
import java.util.Scanner; public class DigitChecker { // 核心判断方法:检查num中是否包含数字x public static boolean contains(int num, int x) { // 先处理负数,转成绝对值避免符号干扰判断 num = Math.abs(num); // 特殊情况:如果要找的是0,且输入的数本身就是0,直接返回true if (num == 0 && x == 0) { return true; } // 循环遍历每一位数字 while (num > 0) { int currentDigit = num % 10; // 取出当前最后一位数字 if (currentDigit == x) { return true; // 找到目标数字,立刻返回true } num = num / 10; // 去掉最后一位,继续检查剩下的数字 } // 循环结束都没找到,返回false return false; } public static void main(String[] args) { Scanner input = new Scanner(System.in); // 获取用户输入的整数 System.out.print("请输入一个整数:"); int userInputNum = input.nextInt(); // 示例:检查是否包含7和3 boolean hasSeven = contains(userInputNum, 7); boolean hasThree = contains(userInputNum, 3); System.out.println("这个整数包含数字7吗?" + hasSeven); System.out.println("这个整数包含数字3吗?" + hasThree); input.close(); } }
关键细节拆解:
- 职责拆分更清晰:把输入和判断逻辑分开,
contains方法只做一件事——判断数字是否存在,以后需要检查其他数字时,直接调用这个方法就行,复用性拉满。 - 处理负数场景:用
Math.abs(num)把整数转成绝对值,不管用户输入的是正数还是负数(比如-127),都能正确遍历每一位数字,不会被负号干扰判断。 - 高效遍历逻辑:不用专门统计数字位数,直接通过
%10取最后一位、/10去掉最后一位的方式循环,逻辑简单还高效,比先统计位数再逐个取首位的方法更直接。 - 特殊情况兜底:当用户输入0且要找的数字也是0时,单独处理这个情况,避免循环因为
num > 0的条件直接跳过,导致判断错误。
如果你坚持想用原来的numberDigits和firstNum的思路实现,也可以告诉我,我再帮你补全那部分的代码~
内容的提问来源于stack exchange,提问作者UnknownJ25
相关产品推荐
相关产品推荐

