如何从4位整数中提取单个数位 Java编程实现问题咨询
实现方案
你有两种可落地的方式可以选择:
方案一:将输入改为String类型接收
这种方式更适合密码场景,可兼容首位为0的4位密码(比如0123这类密码,用int类型接收会自动丢弃前导0,导致位数不足),拆分逻辑更直观:
import java.util.Scanner; public class PinTest { public static void main(String[] args) { String fourDigitPin; int firstDigit; int secondDigit; int thirdDigit; int fourthDigit; Scanner keyInput = new Scanner(System.in); System.out.print("Enter your 4 digit pin number: "); fourDigitPin = keyInput.next(); // 输入合法性校验 if(fourDigitPin.length() != 4 || !fourDigitPin.matches("\\d{4}")) { System.out.println("请输入合法的4位数字密码"); keyInput.close(); return; } // char类型转对应数字需要减去字符'0'的ASCII值 firstDigit = fourDigitPin.charAt(0) - '0'; secondDigit = fourDigitPin.charAt(1) - '0'; thirdDigit = fourDigitPin.charAt(2) - '0'; fourthDigit = fourDigitPin.charAt(3) - '0'; // 后续你的数学运算逻辑可以写在这里 keyInput.close(); } }
方案二:保持int类型接收,用数学运算拆分
如果你的业务场景确认不会出现首位为0的4位密码,可以用取模、除法的方式直接拆分整数:
import java.util.Scanner; public class PinTest { public static void main(String[] args) { int fourDigitPin; int firstDigit; int secondDigit; int thirdDigit; int fourthDigit; Scanner keyInput = new Scanner(System.in); System.out.print("Enter your 4 digit pin number: "); fourDigitPin = keyInput.nextInt(); // 输入合法性校验 if(fourDigitPin < 1000 || fourDigitPin > 9999) { System.out.println("请输入合法的4位数字密码"); keyInput.close(); return; } firstDigit = fourDigitPin / 1000; secondDigit = (fourDigitPin / 100) % 10; thirdDigit = (fourDigitPin / 10) % 10; fourthDigit = fourDigitPin % 10; // 后续你的数学运算逻辑可以写在这里 keyInput.close(); } }
注意事项
你原有代码中存在变量拼写错误:thridDigit正确拼写为thirdDigit,forthDigit正确拼写为fourthDigit。
内容的提问来源于stack exchange,提问作者Suddy88
相关产品推荐
相关产品推荐

