Для цикла не завершается - PullRequest
1 голос
/ 04 декабря 2011

Я пытаюсь вернуться в Java - прошло около 5 лет с тех пор, как я изучал основы, и с тех пор я потерян в мире .Net.

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

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

Я уверен, что это что-то глупое - как всегда, но мне было интересно, может ли кто-нибудь указать мне правильное направление?:)

import java.util.*;
import acm.io.*;

public class Student {

    // instance variables 
    private int studNumber;     //Must be between (and including) 0 and 99999999. If input value invalid default to 0.
    private String studName;    
    private int marks[];   

    /*
     * Constructor Student Class
     */
    public Student(int studNumber, String StudName, int marks[])  {

        // initialise instance variables
        if (studNumber >=0 && studNumber<= 99999999) {
            this.studNumber= studNumber;
        } else {
            this.studNumber = 0; //default value
        }

        this.studName= StudName; // no validation
        this.marks = marks;

        IOConsole console = new IOConsole();

        for (int i = 0; i <= 6; i++) {  
            marks[i] = console.readInt();          
        }     
    }
}

Ответы [ 5 ]

3 голосов
/ 04 декабря 2011

Я думаю, что проблема заключается здесь:

for (int i = 0; i <= 6; i++)
{  
    marks[i] = console.readInt();          
}  

Единственный случай, когда я нашел ссылку на IOConsole, был здесь , и, похоже, он не является частью стандартной платформы Java.

Если вам просто нужно сканировать номера с консоли, вы можете использовать класс Scanner и метод nextInt () , как показано ниже:

Scanner input = new Scanner(System.in);
for (int i = 0; i <= 6; i++)
    {  
        marks[i] = input.nextInt();          
    }  
2 голосов
/ 04 декабря 2011

readInt() ожидает ввода пользователя

из http://jtf.acm.org/javadoc/student/acm/io/IOConsole.html#readInt%28%29:

Считывает и возвращает целое значение от пользователя

2 голосов
/ 04 декабря 2011

Проблема связана с console.readInt (), где выполняется другой цикл без остановок, или какой-то другой проблемой с этим методом

2 голосов
/ 04 декабря 2011

Цикл кажется правильным.Возможно ли, что вызов console.readInt() блокирует, что удерживает вас в цикле (класс IOConsole не является частью стандартного JDK, и я не знаком с ним)

1 голос
/ 04 декабря 2011

Я считаю, что проблема заключается в части readInt(). Необычно читать входные данные из Console в конструкторе для инициализации атрибутов, делегировать эту задачу другой части вашего кода и перемещать ее за пределы конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...