2012-04-04 3 views
1

Это домашнее задание. Я пытаюсь работать с массивами, и это первый проект, который работает с ними. В моей книге представлены всевозможные примеры, но способ, которым они кодируют примеры, не оправдывает того, что требует назначение.Длина и задание длины массива

Я пытаюсь написать программу, которая просит пользователя вводить учащихся в систему. Программа сначала спросит, сколько вы войдете, тогда она предложит вам имя, фамилию и счет.

То, что я пытаюсь выполнить с этим разделом кода, - спросить у пользователя, сколько учеников они будут вводить. Строка кода, которая говорит

getStudentCount(); 

это метод, который собирает эту информацию, а затем возвращает studentCount

Я попытался закодировать это, где длина массива будет число пользователь вводит, но он не работает, поэтому я хотел попросить совета. В идеале, если это работает, и пользователь вводит 3, вам будет предложено ввести информацию 3 раза. Если пользователь вводит 0, то программа ничего не просит.

public static void main(String[] args) 
{ 

    System.out.println("Welcome to the Student Scores Application."); 

    int studentCount = 1; 

    getStudentCount(); 
    studentCount = sc.nextInt(); 

    String [] students = new String[studentCount]; 
    for (int i = 0; i < students.length; i++) 
    { 

     Student s = new Student(); 
     String firstName = getString("Enter first name: "); 
     s.setFirstName(firstName); 

     String lastName = getString("Enter last name: "); 
     s.setLastName(lastName); 

     int score = getScore("Enter score: "); 
     s.setScore(score); 


    } 

} 

Все, что я имел в программе работал, пока я не пытался кодировать

String [] students = new String[studentCount]; 
    for (int i = 0; i < students.length; i++) 

, который говорит мне, что есть что-то не так с тем, как я делаю это.

Также задание запрашивает, что я храню информацию в массиве. Я не понимаю, как назвать это, или, я думаю, сохранил его ... У меня есть еще один класс с сеттерами и геттерами. Этого достаточно, чтобы сохранить его? Как я могу это назвать? Снова это домашнее задание, поэтому любое руководство ценится. Спасибо!

+2

Вы получили ошибку? Что пошло не так? –

+0

@LouisWasserman У меня возникают две проблемы. а не ошибки. Прямо сейчас, когда я запускаю программу, она приветствует пользователя, спрашивает у них, сколько учеников будет входить, а затем ничего не делает. Не подсказывает им вводить имя или что-то еще. Другая проблема была до того, как я попытался создать массив. Программа спросит, сколько записей, но если вы набрали 2 или 3, он только один раз спросил, чтобы не получать информацию от метода getStudentCount() –

ответ

4

Ну, что, по крайней мере пример домашнего задания, который показывает какую-то работу на части askee (и красиво написано), так вот некоторая помощь:

Вы устанавливаете studentCount 1, а затем вызвать getStudentcount(), но никогда не правопреемников возвращаемое значение вашей переменной, поэтому переменная остается 1 (хотя вы переписываете ее потом sc.nextInt(), что, вероятно, не то, что вы хотите, если у вас уже есть хороший метод для нее). Исправление состоит только в том, чтобы присвоить возвращаемое значение вашего метода переменной [1]

[1] Да, я знаю, что я не должен отвечать на домашние вопросы полностью, но я действительно не видел ответа на то, что только частично - предложения приветствуются, хотя :)

+0

Правильно ли я сохраняю информацию в массиве? или, по крайней мере, я на правильном пути? Поскольку я только что узнал об этом, и я сначала его кодирую, я хочу убедиться, что я не делаю этого неправильно. –

+0

* «... но я действительно ничего не видел, чтобы ответить только частично - предложения приветствуются, хотя» *. См. Мой ответ ... кузнечик :-) –

+0

@Stephen Учимся от мастера;) уже поддержал ваш – Voo

0

Я не понимаю, ваши линии

getStudentCount(); 
studentCount = sc.nextInt(); 

если getStudentCount() «возвращает» число их ввода (как вы описываете в тексте), кажется, что вы должны делать

int studentCOunt = getStudentCount(); 
3

Мои советы:

  1. Посмотрите внимательно на то, как вы получаете счет студента, и где вы ставите его. Кажется, вы получаете счет двумя разными способами, и это в лучшем случае избыточно и, вероятно, ошибка.

  2. Предположительно существует трассировка стека. Прочтите!

    Трассировка стека расскажет вам, какое исключение было выбрано, каково его диагностическое сообщение, где оно было выброшено, и где в вашем коде он выполнялся, когда возникла проблема.

  3. Если у вас возникли трудности с визуализацией происходящего, используйте отладчик Java IDE и один шаг программы.


Основываясь на ваших комментариях, нет трассировки стека. Но если бы был один, вы должны прочитать его :-)

0

Я стараюсь не полностью сделать свою домашнюю работу для вас, но посмотрите на приведенный ниже код для проблеск того, как сделать это:

/* Some Declarations You're Going to Need */ 
private static Scanner scan = new Scanner(System.in); //Private, only need it in here 
public static Student[] students; //Public, access it from any class you may need 

public static void main(String[] args) { 
    System.out.println("Welcome to the Student Scores Application."); 
    System.out.print("Amount of students:"); 
    int studentCount = scan.nextInt(); 
    students = new Student[studentCount]; 
    for (int i = 0; i < students.length; i++) { 
     students[i] = new Student(); 

     System.out.print("Enter first name:"); 
     String firstName = scan.next(); 
     students[i].setFirstName(firstName); 

     System.out.print("Enter last name:"); 
     String lastName = scan.next(); 
     students[i].setLastName(lastName); 

     System.out.print("Enter score:"); 
     int score = scan.nextInt(); 
     students[i].setScore(score); 
    } 
    scan = null; //Done with scanner 
} 
Смежные вопросы