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

Java程序输出null而非星期字符串的问题排查求助

问题分析与修复方案

兄弟,你的代码里有几个关键问题导致星期名称输出null,还有潜在的数组越界错误,我一步步给你捋清楚:

核心问题:星期数组未提前初始化就使用

你现在的代码是先进入循环打印dayOfWeek[i],之后才尝试给数组赋值——而且赋值的方式完全错了!你所有的dayOfWeek[i] = "XXX"都是给同一个i赋值(循环结束后i已经是7了,还超出了数组的索引范围),等于根本没给数组里的元素正确赋值,所以打印的时候自然是null(Java中字符串数组默认初始值都是null)。

具体修复步骤

  • 第一步:提前初始化星期数组
    在开始输入温度之前,就把dayOfWeek的每个元素对应好星期名称,数组索引从0到6分别对应周日到周六:

    String[] dayOfWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    

    或者逐个赋值:

    dayOfWeek[0] = "Sunday";
    dayOfWeek[1] = "Monday";
    // ... 以此类推到dayOfWeek[6] = "Saturday"
    
  • 第二步:修复循环边界
    你的循环条件i <= temp.length会导致数组越界,因为数组的索引是从0开始的,temp.length是7,最大索引是6。所以循环条件要改成i < temp.length。

  • 第三步:删除冗余的输入代码
    你在循环之后又写了7次temp[i] = scnr.nextInt();,这完全多余,而且此时i已经是7,会直接触发数组越界异常,必须删掉。

修正后的完整代码

import java.util.Scanner;
public class TempsInOneWeek {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        final int NUMBER_OF_DAYS = 7;
        // 提前初始化好星期数组
        String[] dayOfWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
        int[] temp = new int[NUMBER_OF_DAYS];
        
        System.out.println("Enter the temperature for each day, beginning with Sunday.");
        // 修复循环边界,用i < temp.length
        for (int i = 0; i < temp.length; ++i) {
            System.out.print("Enter temperature for " + dayOfWeek[i] + ": ");
            temp[i] = scnr.nextInt();
            // 现在可以正常打印星期名称了
            System.out.println(dayOfWeek[i] + "'s temperature was: " + temp[i] + " degrees.");
        }
        scnr.close(); // 记得关闭Scanner资源
    }
}

额外说明

  • Java中,当你创建一个对象数组(比如String[])时,每个元素的默认值是null,必须手动赋值后才能正常使用。
  • 数组的索引范围永远是0到length-1,循环时一定要注意边界条件,避免ArrayIndexOutOfBoundsException。

内容的提问来源于stack exchange,提问作者Jen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:00:10