String返回空值的Java问题,尽管使用Scanner类输入数据
问题描述:
我正在编写一个非常简单的类的程序。所有它需要我打印成绩表,并能够输入3条信息(这里用字符串studentName, idNumber
和assignmentTitle
表示)。成绩表必须存储在一个字符串中。好吧,这对我来说看起来好像它应该工作,但无论出于什么原因,输出studentName, idNumber
和assignmentTitle
应该出现在空值输出。非常简单的问题,我敢肯定,有什么想法?这是我的代码。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);
}
答
你的问题是你的类是如何实例化的。这是发生了什么:
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 =...
线),assignmentTitle
,studentName
和idNumber
是null
。
在完成接受来自用户的输入之后,您应该改为初始化gradeSheet
。
谢谢....计算它会很简单 – Marq