使用扫描仪从文件中读取整数

Issue reading integers from file using Scanner

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

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

我正在使用的输入文件包含以下信息:

1 1 1
2 2 2
3 3 3
4 4 4

使用这个文件,我试图使 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++;
}

当您使用 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();
        }
    }