2011-11-30 4 views
2

非常に簡単なクラスのプログラムを作成しています。グレードシートを印刷し、3つの情報(ここではストリングstudentName, idNumberおよびassignmentTitleで表される)を入力することが私に要求されます。グレードシートは、単一の文字列に格納する必要があります。それで、私にとってこれはうまくいくはずですが何らかの理由で入力されたstudentName, idNumberassignmentTitleが現れるヌル値を出力します。非常に単純な問題私は確信している、任意のアイデアですか?ここに私のコードです。データを入力するためにスキャナクラスを使用していても、ヌル値を返す文字列のJavaの問題

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

問題は、変数を初期化する順序です。

あなたはgradeSheetstatic String gradeSheet =...とライン)、assignmentTitlestudentName、およびidNumberを初期化nullあります。

ユーザーからの入力を受け入れた後で、代わりにgradeSheetを初期化する必要があります。

関連する問題