You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 18:19:10