Проблема Java с String, возвращающей значение Null, несмотря на использование класса Scanner для ввода данных - PullRequest
2 голосов
/ 30 ноября 2011

Я пишу программу для класса, которая очень проста.Все, что от меня требуется, - это распечатать оценочный лист и уметь вводить 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();
}
}

Ответы [ 3 ]

4 голосов
/ 30 ноября 2011

Ваша проблема в том, что вы используете эти переменные перед присвоением им значений:

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);
}
1 голос
/ 30 ноября 2011

Ваша проблема в том, как создается ваш класс. Вот что происходит:

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 голосов
/ 30 ноября 2011

Ваша проблема в том порядке, в котором вы инициализируете свои переменные.

При инициализации gradeSheet (строка с static String gradeSheet =...), assignmentTitle, studentName и idNumber равны null.

Вместо этого вам следует инициализировать gradeSheet после того, как вы закончили принимать ввод от пользователя.

...