Java For循环不终止

Java For循环不终止,java,for-loop,Java,For Loop,我正试图回到Java——我学习基础知识已经有5年了,从那时起我就迷失在了.Net世界中 我试图在下面创建一个student类,但是当程序运行时,用于将整数读入数组的for循环被卡住了 从我以前的知识和研究来看,这个循环似乎构造得很好,我似乎无法找出哪里出了问题 我确信这是一件愚蠢的事情——就像往常一样,但我想知道是否有人能给我指出正确的方向 import java.util.*; import acm.io.*; public class Student { // instance

我正试图回到Java——我学习基础知识已经有5年了,从那时起我就迷失在了.Net世界中

我试图在下面创建一个student类,但是当程序运行时,用于将整数读入数组的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();          
        }     
    }
}

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

readInt正在等待用户输入

发件人:

从用户处读取并返回一个整数值

readInt正在等待用户输入

发件人:

从用户处读取并返回一个整数值


问题在于console.readInt,其中另一个不停止循环正在执行,或者该方法存在其他问题

问题在于console.readInt,其中另一个不停止循环正在执行,或者该方法存在其他问题

我认为问题在于:

for (int i = 0; i <= 6; i++)
{  
    marks[i] = console.readInt();          
}  
我发现IOConsole引用的唯一实例是,它似乎不是标准Java框架的一部分

如果您只需要从控制台扫描数字,则可以使用类和方法,如下所示:

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

我认为问题在于:

for (int i = 0; i <= 6; i++)
{  
    marks[i] = console.readInt();          
}  
我发现IOConsole引用的唯一实例是,它似乎不是标准Java框架的一部分

如果您只需要从控制台扫描数字,则可以使用类和方法,如下所示:

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

我认为问题在于阅读部分。在构造函数中从控制台读取用于初始化属性的输入、将该任务委托给代码的另一部分并将其移到构造函数之外是很少见的。

我认为问题在于readInt部分。在构造函数中读取控制台的输入以初始化属性、将该任务委托给代码的另一部分并将其移到构造函数之外是很少见的。

什么是IOConsole?当你试着调试这个程序时,你看到了什么?@Peter。当程序被卡住时,你真的提供了任何值吗?readInt方法可能从控制台读取一些内容,您看到这个控制台并输入数据了吗?@109221793,什么意思被卡住了?readInt需要用户输入,所以您需要提供它,这可能就是它看起来卡住的原因吗?嗨,伙计们,谢谢你们的评论。我使用的是一个名为BlueJ的编译器,老实说,我以前不会使用它,我更习惯于jGrasp。要在此编译器中创建学生对象,请在“BlueJs新建对象”对话框中键入值。你认为这有区别吗?什么是IOConsole?当你试着调试这个程序时,你看到了什么?@Peter。当程序被卡住时,你真的提供了任何值吗?readInt方法可能从控制台读取一些内容,您看到这个控制台并输入数据了吗?@109221793,什么意思被卡住了?readInt需要用户输入,所以您需要提供它,这可能就是它看起来卡住的原因吗?嗨,伙计们,谢谢你们的评论。我使用的是一个名为BlueJ的编译器,老实说,我以前不会使用它,我更习惯于jGrasp。要在此编译器中创建学生对象,请在“BlueJs新建对象”对话框中键入值。你认为这有什么不同吗?他用的是:嗨,npinti,我用的是一个叫做BlueJ的编译器,老实说,我以前不会用它的,我更习惯于jGrasp。要在此编译器中创建学生对象,请在“BlueJs新建对象”对话框中键入值。你认为这有区别吗?道歉如果这是一个愚蠢的问题,我不认为这真的有什么区别。为了清楚起见,blueJ是一个IDE,老实说,我从未使用过。我建议您切换到业界更常见的Eclipse,或者使用Netbeans,这是Oracle的Sun推荐的IDE。他使用的是:嗨,npinti,我使用的是一个名为BlueJ的编译器,老实说,我以前不会使用它,因为它更习惯于jGrasp。要在此编译器中创建学生对象,请在“BlueJs新建对象”对话框中键入值。你认为这有区别吗?道歉如果这是一个愚蠢的问题,我不认为这真的有什么区别。为了清楚起见,blueJ是一个IDE,老实说,我从未使用过。我建议您切换到业界更常见的Eclipse,或者使用Netbeans,这是Oracle Sun推荐的IDE
老实说,如果使用名为BlueJ的编译器,我以前不会使用jGrasp。要在此编译器中创建学生对象,请在“BlueJs新建对象”对话框中键入值。你认为这有区别吗?道歉如果这是一个愚蠢的问题,我不认为这有什么区别。问题在于您在构造函数中调用阻塞方法readInt,这是您应该避免的—请注意console.readInt希望用户在console中键入一些值。相反,让对象创建正常完成,然后在另一种方法中,要求用户提供初始化值并将其传递给marks数组。万分感谢:-嗨,奥斯卡,我正在使用一个名为BlueJ的编译器,老实说,我以前不会使用它,因为它更习惯于jGrasp。要在此编译器中创建学生对象,请在“BlueJs新建对象”对话框中键入值。你认为这有区别吗?道歉如果这是一个愚蠢的问题,我不认为这有什么区别。问题在于您在构造函数中调用阻塞方法readInt,这是您应该避免的—请注意console.readInt希望用户在console中键入一些值。相反,让对象创建正常完成,然后在另一种方法中,要求用户提供初始化值并将其传递给marks数组。万分感谢:-