Java实现十位大于个位的两位数筛选与输入校验逻辑修正
功能需求
- 筛选10-99区间的两位数,仅打印十位数字大于个位数字的数值
- 基于JOptionPane实现输入交互:仅支持输入两位数,若输入值小于10或大于99,弹出MessageDialog错误提示
- 输入输出示例:依次输入91、47、68、21时,最终输出结果为
91, 21
现存问题
当前编写的代码仅完成了输入值的范围判断,未实现十位与个位的大小比对筛选逻辑,所有落在10-99区间的数值都会被直接打印,不符合需求。原有代码如下:
int numbers; while (true) { numbers = Integer.parseInt(JOptionPane.showInputDialog(null, "ENTER THE NUMBERS BETWEEN 10 AND 99")); if (numbers >= 10 && numbers <= 99) { System.out.print(numbers + " "); } else if (numbers != 99) { JOptionPane.showMessageDialog(null, "WRONG NUMBER!"); } }
修正逻辑
- 对通过范围校验的两位数做数位拆分:整数除法
/10取十位数字,取模运算%10取个位数字
数位计算示例:对数值91,
91/10 = 9(十位),91%10 = 1(个位),9>1符合筛选要求;对数值47,47/10=4,47%10=7,4<7不符合要求。
- 新增大小判断分支:仅当十位数字大于个位数字时,才将该数值存入待输出集合
- 调整输出格式为逗号分隔,匹配示例要求
- 补全循环退出逻辑(约定输入0或点击弹窗取消按钮时终止输入),统一错误提示触发规则,将所有非10-99区间且非退出指令的输入判定为非法输入,弹出错误提示
修正后可运行代码
import javax.swing.JOptionPane; import java.util.ArrayList; import java.util.List; public class TwoDigitFilter { public static void main(String[] args) { int inputNum; List<Integer> matchedNums = new ArrayList<>(); while (true) { String inputContent = JOptionPane.showInputDialog(null, "请输入10-99之间的两位数,输入0或点击取消结束操作"); // 处理用户点击取消按钮的场景 if (inputContent == null) { break; } inputNum = Integer.parseInt(inputContent); // 输入0触发退出 if (inputNum == 0) { break; } // 范围校验 if (inputNum >= 10 && inputNum <= 99) { int tensDigit = inputNum / 10; int onesDigit = inputNum % 10; if (tensDigit > onesDigit) { matchedNums.add(inputNum); } } else { JOptionPane.showMessageDialog(null, "输入错误,请输入10-99之间的两位数"); } } // 格式化输出结果 System.out.println(String.join(", ", matchedNums.stream().map(String::valueOf).toArray(String[]::new))); } }
内容的提问来源于stack exchange,提问作者FlyingRacoon51
相关产品推荐
相关产品推荐

