有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我的程序打印“null”而不是字符串?

我正在尝试创建一个程序来打印一周中每天的温度。我不知道为什么我的代码打印“null”而不是一周中的每一天。我以前从未见过这个错误(我正在学习编程课程),在教科书中找不到任何信息。这是我到目前为止的代码

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 = new String[NUMBER_OF_DAYS];
    int[] temp = new int [7]; //array of 7 temperatures for 7 days of the week
    int tempForDay = 0;
    int i = 0; //loop variable

    System.out.println("Enter the temperature for each day, beginning with Sunday.");

    for (i = 0; i <= temp.length; ++i) {
        temp[i] = scnr.nextInt();
        System.out.println(dayOfWeek[i] + "/'s temperature was: " + temp[i] + " degrees.");
    }

    dayOfWeek[i] = "Sunday";    
    dayOfWeek[i] = "Monday";
    dayOfWeek[i] = "Tuesday";
    dayOfWeek[i] = "Wednesday";
    dayOfWeek[i] = "Thursday";
    dayOfWeek[i] = "Friday";
    dayOfWeek[i] = "Saturday";

    temp[i] = scnr.nextInt();
    temp[i] = scnr.nextInt();
    temp[i] = scnr.nextInt();
    temp[i] = scnr.nextInt();
    temp[i] = scnr.nextInt();
    temp[i] = scnr.nextInt();
    temp[i] = scnr.nextInt();
}

很明显,数组放错了位置,但它现在不会影响输出,所以我想表明我至少在这里尝试过。实际上,我唯一的问题是如何打印一周中的哪一天。也许还有一点关于如何处理上面的两个阵列的指导


共 (2) 个答案

  1. # 1 楼答案

    当您尝试从数组中检索数据时

    System.out.println(dayOfWeek[i] + "/'s temperature was: " + temp[i] + " degrees.");
    

    。。。此时您实际上还没有向数组中放入任何内容

    创建阵列时

    String[] dayOfWeek = new String[NUMBER_OF_DAYS];
    

    这将创建数组并使用null填充每个索引

    请记住,在声明和初始化数组时,除非显式填充数组,否则数组将填充数组类型的默认值(在您的示例中为字符串,字符串的默认值为null)

    因此,您需要将实际填充数组的代码行移动到之前尝试检索数据的点

    dayOfWeek[i] = "Sunday";    
    dayOfWeek[i] = "Monday";
    dayOfWeek[i] = "Tuesday";
    dayOfWeek[i] = "Wednesday";
    dayOfWeek[i] = "Thursday";
    dayOfWeek[i] = "Friday";
    dayOfWeek[i] = "Saturday";
    
    for (i = 0; i <= temp.length; ++i) {
        temp[i] = scnr.nextInt();
        System.out.println(dayOfWeek[i] + "/'s temperature was: " + temp[i] + " 
        degrees.");
    }
    
  2. # 2 楼答案

    只需在for循环之前移动以下分配

    dayOfWeek[i] = "Sunday";    
    dayOfWeek[i] = "Monday";
    dayOfWeek[i] = "Tuesday";
    dayOfWeek[i] = "Wednesday";
    dayOfWeek[i] = "Thursday";
    dayOfWeek[i] = "Friday";
    dayOfWeek[i] = "Saturday";