对于循环未终止

时间:2011-12-04 16:55:45

标签: java for-loop

我正在努力重新使用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 个答案:

答案 0 :(得分:3)

我认为问题在于:

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

我发现对IOConsole的引用的唯一实例是here,它似乎不是标准Java框架的一部分。

如果您只需要从控制台扫描数字,则可以使用Scanner类并使用如下所示的nextInt()方法:

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

答案 1 :(得分:2)

循环似乎是正确的。 console.readInt()调用是否可能阻塞,这会让你陷入循环(IOConsole类不是标准JDK的一部分,我不熟悉它)

答案 2 :(得分:2)

readInt()正在等待用户输入

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

  

从用户

读取并返回一个整数值

答案 3 :(得分:2)

问题在于console.readInt(),其中正在执行另一个不间断循环或该方法的其他一些问题

答案 4 :(得分:1)

我认为问题出在readInt()部分。在构造函数中从Console读取输入以初始化属性,将该任务委托给代码的另一部分并将其移到构造函数之外是不常见的。