109221793
109221793

Reputation: 16887

For Loop Not Terminating

I'm trying to get back into Java - it's been about 5 years since I studied the basics and I've been lost in the .Net world since.

I'm trying to create a student class below, however the for loop for reading in the integers into the array gets stuck when the program runs.

From my previous knowledge, and from research, the loop seems to be constructed properly and I can't seem to figure out where it's going wrong.

I'm sure it's something silly - as always but I was wondering if someone could point me in the right direction? :)

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();          
        }     
    }
}

Upvotes: 1

Views: 1224

Answers (5)

npinti
npinti

Reputation: 52185

I think that the problem lies here:

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

The only instance where I found a reference to IOConsole was here and it does not seem to be something which is part of the standard Java framework.

If you just need to scan numbers from console, you can use the Scanner class and the use the nextInt() method like below:

Scanner input = new Scanner(System.in);
for (int i = 0; i <= 6; i++)
    {  
        marks[i] = input.nextInt();          
    }  

Upvotes: 3

&#211;scar L&#243;pez
&#211;scar L&#243;pez

Reputation: 236004

I believe the problem lies in the readInt() part. It's unusual to read input from the Console in a constructor for initializing the attributes, delegate that task to another part of your code and move it outside the constructor.

Upvotes: 1

Ramnath
Ramnath

Reputation: 438

The problem is with console.readInt(), where another non-stop loop is executing or some other problem with that method

Upvotes: 2

Oleg Mikheev
Oleg Mikheev

Reputation: 17444

readInt() is waiting for user input

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

Reads and returns an integer value from the user

Upvotes: 2

Robin
Robin

Reputation: 36601

The loop seems correct. Is it possible the console.readInt() call is blocking, which keeps you stuck in the loop (the IOConsole class is not part of the standard JDK, and I am not familiar with it)

Upvotes: 2

Related Questions