Java入门求助:如何实现逐位递增数字的查找方法?
帮你实现逐位递增数字的查找方法
嘿,刚学Java遇到卡壳太正常啦!别着急,我来一步步帮你搞定这个需求~
首先咱们明确目标:逐位递增的数字指的是每一位数字都严格大于前一位,比如1234567,从左到右每一位都比前一位大;而像12405346里有0<4,就不符合要求。
第一步:写一个判断单个数字是否递增的工具方法
咱们可以先封装一个方法,专门用来判断某个整数是不是逐位递增的。逻辑很简单:把数字的每一位拆出来,依次比较相邻两位,只要有一位不大于前一位,就判定不符合;全部符合就返回true。
代码示例:
public static boolean isIncreasingNumber(int num) { // 个位数没有相邻位,默认算递增 if (num < 10) { return true; } int lastDigit = num % 10; // 先取最后一位作为参考 num = num / 10; // 去掉最后一位 while (num > 0) { int currentDigit = num % 10; // 如果当前位 >= 上一位,说明不满足递增 if (currentDigit >= lastDigit) { return false; } // 更新参考位,继续循环 lastDigit = currentDigit; num = num / 10; } // 所有相邻位都满足递增,返回true return true; }
第二步:在主程序里使用这个方法
有了上面的工具方法,咱们就可以遍历你输入的数组,逐个判断并输出符合条件的数字了。比如在你的现有代码后面加上这段:
// 查找并输出逐位递增的数字 System.out.println("逐位递增的数字:"); for (int number : sourceNumber) { if (isIncreasingNumber(number)) { System.out.println(number); } }
小提醒:避免修改原数组元素
看了你之前写的「找不同数字最少」的代码,发现你直接修改了sourceNumber[k]的值(sourceNumber[k] /= 10),这样会导致原数组里的数字被改成0,后面再用的时候就出问题啦!建议改成用临时变量操作:
// 原来的代码片段修改后 int tempNum = sourceNumber[k]; // 用临时变量存原数字 while (tempNum != 0) { digitsCount1[tempNum % 10]++; tempNum /= 10; // 修改临时变量,不影响原数组 }
这样你的原数组就能保持完整,既可以用来找不同数字最少的数,也能用来找逐位递增的数~
内容的提问来源于stack exchange,提问作者Timur Ivanov
相关产品推荐
相关产品推荐

