Java数组填充异常求助:如何正确填充ASCII值数组?
问题分析与修复方案
嘿,作为编程新手遇到这种小问题太正常啦,我来帮你拆解一下~
问题根源
你现在的代码里用了嵌套循环,但这完全是多余的,反而直接导致了错误:
for(ii= 0; ii != 26; ii++) { for(jj = 65; jj != 91; jj++) { intArrayCapital[ii] = jj; } }
外层循环每遍历一个数组下标ii,内层循环就会从65跑到90,反复给intArrayCapital[ii]赋值。等内层循环结束时,这个位置最后被赋的值就是90(jj的最终值),所以整个数组最后全是90,完全覆盖了之前的所有赋值。
修复方案
其实你只需要单循环就能完美完成数组填充:每个数组下标ii对应的ASCII值就是65 + ii(因为65是'A'的ASCII,ii从0到25正好对应A-Z),小写字母同理是97 + ii(97是'a'的ASCII)。
修复后的完整代码:
import java.util.*; public class CharacterConverter { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] intArrayCapital = new int[26]; int[] intArrayLower = new int[26]; // 填充大写字母ASCII值(65-90) for(int ii = 0; ii < 26; ii++) { intArrayCapital[ii] = 65 + ii; } // 填充小写字母ASCII值(97-122) for(int ii = 0; ii < 26; ii++) { intArrayLower[ii] = 97 + ii; } System.out.println("大写字母ASCII数组:" + Arrays.toString(intArrayCapital)); System.out.println("小写字母ASCII数组:" + Arrays.toString(intArrayLower)); sc.close(); // 记得关闭Scanner资源,养成好习惯 } }
额外小建议
- 循环条件尽量用
ii < 26而不是ii != 26:如果不小心修改了ii的值(比如ii变成27),!=会导致无限循环,而<的逻辑更安全稳定。 - 变量名可以更语义化:比如把
intArrayCapital改成capitalAsciiArray,可读性会更好,后期维护自己的代码也更轻松。
内容的提问来源于stack exchange,提问作者SaSolLI
相关产品推荐
相关产品推荐

