Java基础学习:SIN号识别程序0开头9位输入报错问题求助
修复说明
- 输入处理改为字符串类型,避免int自动截断前导0的问题,同时直接通过字符串长度判断是否为9位,逻辑更简单
- 修正0和8开头的判断条件,把永远无法成立的逻辑与
&&改为逻辑或|| - 直接取字符串第一位判断所属地区,不需要循环取最高位,简化逻辑
修复后完整代码
import java.util.Scanner; public class FirstDigitSIN { public static void main(String[] args) { Scanner kb = new Scanner(System.in); System.out.print("Enter a SIN number :"); String input = kb.nextLine().trim(); // 校验是否为纯数字 boolean isNumber = true; for (char c : input.toCharArray()) { if (!Character.isDigit(c)) { isNumber = false; break; } } if (!isNumber) { System.out.println("Error message goes here. Here you can tell them that you want them to enter an integer and not a string."); } else if (input.length() != 9) { System.out.println("Invalid Entry"); } else { char firstDigit = input.charAt(0); switch (firstDigit) { case '1': System.out.println(" Registered in Atlantic Canada "); break; case '2': case '3': System.out.println(" Registered in Quebec "); break; case '4': case '5': System.out.println(" Registered in Ontario "); break; case '6': System.out.println(" Registered in Prairie Provinces, NWT, Nunavut, Northwest Ontario "); break; case '7': System.out.println(" Registered in Pacific region "); break; case '9': System.out.println(" A temporary SIN "); break; case '0': case '8': System.out.println("Not used"); break; } } System.out.println(" *** End of program *** "); } }
内容的提问来源于stack exchange,提问作者Divya Patel
相关产品推荐
相关产品推荐

