Java中如何将用户输入的数字字符串转换为保留前导零的整数数组
Java中如何将用户输入的数字字符串转换为保留前导零的整数数组
嗨,我完全懂你的困扰——你想把用户输入的带前导零的数字字符串(比如"089")拆成每个数字单独作为元素的整数数组,结果用Integer.parseInt()直接转成整数的话,前导零就丢了,变成89,根本没法得到[0, 8, 9]这样的结果对吧?
其实解决思路很简单:不要先把整个字符串转成整数,因为整数本身不存储前导零。咱们直接操作字符串的每一位字符就好,这样能完美保留所有数字,包括开头的零。
方法一:直接遍历字符串字符转整数
这是最直观的方法,逐个处理字符串里的每个字符,把字符形式的数字转成对应的整数:
import java.util.Scanner; public class DigitArrayConverter { public static void main(String[] args) { Scanner read = new Scanner(System.in); System.out.println("Guess the number: "); String input = read.nextLine(); // 根据字符串长度创建整数数组 int[] digitArray = new int[input.length()]; // 遍历每个字符,转成整数存入数组 for (int i = 0; i < input.length(); i++) { // 利用ASCII码差值转数字:字符'0'的ASCII值是48,减去它就能得到对应数字 digitArray[i] = input.charAt(i) - '0'; } // 验证输出(可选) System.out.println("转换后的整数数组:"); for (int digit : digitArray) { System.out.print(digit + " "); } } }
运行这段代码,输入"089"的话,输出就是0 8 9,完美保留了前导零。
额外优化:处理非法输入
如果担心用户输入非数字字符导致程序崩溃,可以加个合法性检查,确保每个字符都是数字:
import java.util.Scanner; public class DigitArrayConverter { public static void main(String[] args) { Scanner read = new Scanner(System.in); System.out.println("Guess the number: "); String input = read.nextLine(); int[] digitArray = new int[input.length()]; for (int i = 0; i < input.length(); i++) { char currentChar = input.charAt(i); // 检查当前字符是否是数字 if (Character.isDigit(currentChar)) { digitArray[i] = currentChar - '0'; } else { // 这里可以根据需求处理非法输入,比如抛出异常或提示用户 System.err.println("输入包含非数字字符,请重新输入!"); return; } } // 输出结果 System.out.println("转换后的整数数组:"); for (int digit : digitArray) { System.out.print(digit + " "); } } }
这样如果用户输入比如"0a9",程序会直接提示错误并终止,避免出现运行时异常。
为什么这个方法可行?
字符类型的数字(比如'0'、'8')在ASCII表中是连续排列的,'0'的ASCII值是48,'1'是49,以此类推。所以用字符减去'0'的ASCII值,就能直接得到对应的整数数字,而且整个过程不会丢失任何字符信息——包括前导零,因为我们是逐个处理字符串里的每一位,没有把整个字符串转成整数的步骤。
内容来源于stack exchange
相关产品推荐
相关产品推荐

