2011-11-30 56 views
2

我正在编写一个非常简单的类的程序。所有它需要我打印成绩表,并能够输入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(); 
} 
} 

回答

4

你的问题是,你将值分配给他们之前使用这些变量:

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

1

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

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已经设置的值。

0

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

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

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