Java问题,字符串返回空值,尽管使用Scanner类输入数据

Java问题,字符串返回空值,尽管使用Scanner类输入数据,java,string,null,Java,String,Null,我正在为一个非常简单的类编写一个程序。它只需要我打印一张成绩表,并且能够输入3条信息(这里用字符串studentName、idNumber和assignmentTitle表示)。成绩表必须存储在单个字符串中。对我来说,这似乎应该可以工作,但无论出于何种原因,它都会在输入的studentName、idNumber和assignmentTitle应该出现的地方输出空值。很简单的问题,有什么想法吗?这是我的密码 import java.util.Scanner; class GradingForm

我正在为一个非常简单的类编写一个程序。它只需要我打印一张成绩表,并且能够输入3条信息(这里用字符串
studentName、idNumber
assignmentTitle
表示)。成绩表必须存储在单个字符串中。对我来说,这似乎应该可以工作,但无论出于何种原因,它都会在输入的
studentName、idNumber
assignmentTitle
应该出现的地方输出空值。很简单的问题,有什么想法吗?这是我的密码

import java.util.Scanner;

class GradingForm
{
static String studentName;
static String idNumber;
static String assignmentTitle;
    static String gradeSheet = "********************************* \n\n" + 
                                assignmentTitle + "\n\n" +
                                studentName + " " + idNumber + "\n\n" +
                                "Grade Summary:\n\n" +
                                "Program Correctness:        Quality of Style:\n" +
                                "Late Deduction:              Overall Score:\n" +
                                "Comments:";
public static void gradeFormValues()
{
    Scanner inData;
    inData = new Scanner(System.in);
    System.out.println("Enter student's name: ");
    studentName = inData.nextLine();
    System.out.println("Enter student ID number: ");
    idNumber = inData.nextLine();
    System.out.println("Enter Assignment title: ");
    assignmentTitle = inData.nextLine();
}
public static void printGradeSheet()
{
    System.out.println(gradeSheet);
}

public static void main(String[] args)
{
            gradeFormValues();
            printGradeSheet();
}
}

您的问题是,在为这些变量赋值之前使用这些变量:

static String gradeSheet = "********************************* \n\n" + 
                                assignmentTitle + "\n\n" +
                                studentName + " " + idNumber + "\n\n" +
                                "Grade Summary:\n\n" +
                                "Program Correctness:        Quality of Style:\n" +
                                "Late Deduction:              Overall Score:\n" +
                                "Comments:";
仅在为字符串赋值后才需要生成字符串,例如:

public static void printGradeSheet()
{
    gradeSheet = "********************************* \n\n" + 
       assignmentTitle + "\n\n" +
       studentName + " " + idNumber + "\n\n" +
       "Grade Summary:\n\n" +
       "Program Correctness:        Quality of Style:\n" +
       "Late Deduction:              Overall Score:\n" +
       "Comments:";
    System.out.println(gradeSheet);
}

您的问题是如何实例化类。情况就是这样:

studentName is set to null

idNumber is set to null

assignmentTitle is set to null

gradeSheet is set using the current values of studentName etc (null).

之后,您读取数据并设置变量,但这不会更改已设置的成绩表的值。

您的问题在于初始化变量的顺序

初始化
成绩表
(带有
静态字符串成绩表=…
的行)、
作业标题
学生姓名
ID号

您应该在完成接受用户输入后初始化
成绩表