String返回空值的Java问题,尽管使用Scanner类输入数据

问题描述:

我正在编写一个非常简单的类的程序。所有它需要我打印成绩表,并能够输入3条信息(这里用字符串studentName, idNumberassignmentTitle表示)。成绩表必须存储在一个字符串中。好吧,这对我来说看起来好像它应该工作,但无论出于什么原因,输出studentName, idNumberassignmentTitle应该出现在空值输出。非常简单的问题,我敢肯定,有什么想法?这是我的代码。String返回空值的Java问题,尽管使用Scanner类输入数据

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); 
} 
+0

谢谢....计算它会很简单 – Marq

你的问题是你的类是如何实例化的。这是发生了什么:

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). 

后您阅读您的数据和设置的变量,但是这并不能改变gradeSheet已经设置的值。

你是问题是你初始化变量的顺序。

当初始化gradeSheet(与static String gradeSheet =...线),assignmentTitlestudentNameidNumbernull

在完成接受来自用户的输入之后,您应该改为初始化gradeSheet