Java 使用扫描仪从文件中读取整数时出现问题

Java 使用扫描仪从文件中读取整数时出现问题,java,arrays,file,java.util.scanner,Java,Arrays,File,Java.util.scanner,我在使用扫描仪从输入文件读取整数时遇到问题。以下是我遇到问题的代码: String path = sc.nextLine(); File filename = new File(path); Scanner reader = null; reader = new Scanner(filename); for(int i = 0; i <

我在使用扫描仪从输入文件读取整数时遇到问题。以下是我遇到问题的代码:

        String path = sc.nextLine(); 
        
        File filename = new File(path);
        
        Scanner reader = null;
        
        reader = new Scanner(filename);
        
        for(int i = 0; i < 4; i++)
        {  
           while(reader.hasNextInt()) 
           {   
               System.out.println(reader.nextLine());
               pid[i] = reader.nextInt();
               arrivaltime[i] = reader.nextInt();
               burstTime[i] = reader.nextInt();
           }      
        } 
使用此文件,我试图使其pid[]=[1,2,3,4],arrivaltime[]=[1,2,3,4]和bursttime[]=[1,2,3,4]。然而,这些数组中的每一个都显示为[4,0,0,0],我不知道为什么。任何帮助都将不胜感激。

试试以下方法: 先读这行 那就分了

int i = 0
while(reader.hasNextLine()){
   String[] line = reader.nextLine().split(" ");
   pid[i] = Integer.parseInt(line[0]);
   arrivaltime[i] = Integer.parseInt(line[1]);
   burstTime[i] = Integer.parseInt(line[2]);
   i++;
}
试试这个: 先读这行 那就分了

int i = 0
while(reader.hasNextLine()){
   String[] line = reader.nextLine().split(" ");
   pid[i] = Integer.parseInt(line[0]);
   arrivaltime[i] = Integer.parseInt(line[1]);
   burstTime[i] = Integer.parseInt(line[2]);
   i++;
}

使用
scanner.nextLine()
时,文件中的扫描仪指针跳过第一行

如果不想打印每一行或使用其他拆分解决方案,可以使用此选项

int i = 0;
while(reader.hasNextInt()) {
    pid[i] = reader.nextInt();
    arrivaltime[i] = reader.nextInt();
    burstTime[i] = reader.nextInt();
    i++;
}

使用
scanner.nextLine()
时,文件中的扫描仪指针跳过第一行

如果不想打印每一行或使用其他拆分解决方案,可以使用此选项

int i = 0;
while(reader.hasNextInt()) {
    pid[i] = reader.nextInt();
    arrivaltime[i] = reader.nextInt();
    burstTime[i] = reader.nextInt();
    i++;
}
试试这个:

    for(int i = 0; i < 4; i++)
    {

        if (reader.hasNextInt()) {
            pid[i] = reader.nextInt();
            arrivaltime[i] = reader.nextInt();
            burstTime[i] = reader.nextInt();
        }
    }

    
for(int i=0;i<4;i++)
{
if(reader.hasNextInt()){
pid[i]=reader.nextInt();
到达时间[i]=reader.nextInt();
burstTime[i]=reader.nextInt();
}
}
试试这个:

    for(int i = 0; i < 4; i++)
    {

        if (reader.hasNextInt()) {
            pid[i] = reader.nextInt();
            arrivaltime[i] = reader.nextInt();
            burstTime[i] = reader.nextInt();
        }
    }

    
for(int i=0;i<4;i++)
{
if(reader.hasNextInt()){
pid[i]=reader.nextInt();
到达时间[i]=reader.nextInt();
burstTime[i]=reader.nextInt();
}
}

while(reader.hasNextInt())
这一行总是询问是否还有一个整数,而且还有,所以你的
for循环
在(reader.hasNextInt())这一行总是询问是否还有一个整数,并且有,因此,您的
for循环
从未进行任何迭代。这很有效,非常感谢!没问题,如果这对你有帮助,你可以接受它作为正确的答案!这很有效,非常感谢!没问题,如果这对你有帮助,你可以接受它作为正确的答案!