如何在不使用hasNextInt()Java的情况下从文本文件中读取整数

时间:2016-11-27 23:44:28

标签: java

所以我是编程的新手,我们必须做这个实验,我们从只有一行数字的文本文件中读取。然后我们必须将这些整数放入数组中。我知道如何在分开的行中读取数字,而不是当它们在一行中时。我也知道如何将数字放入数组中,所以我不需要帮助。

我们允许使用的唯一方法是:

  • hasMoreTokens()
  • hasMoreLines()
  • readDouble()
  • readInt()
  • readLine()
  • readToken()

有没有办法在仅使用这些方法时这样做?

以下是代码:

import chn.util.FileInput;
import chn.util.FileOutput;

public class Compact {
    public Compact (FileInput inFile, FileOutput outFile){
        int[] compactArray = new int [21];
        int numZeroes = 0;
        int num;
        int length = compactArray.length;

    for (int i = 0; i < length; i++) { //making the array for the integers in the list
        compactArray[i] = 0;
    }

    while (inFile.hasMoreLines()) {
        num = 0;
        num = inFile.readInt(); //reads the integers per line
        compactArray[num]++;
    }

    for(int i = 0; i < length; i++) {
        if(compactArray[i] == 0) {
            length--;

            for(int j = i; j < length; j++) {
                compactArray[j] = compactArray[j+1];
            }
            i--; // Decrement i to check the value that was shifted
        } else { 
            numZeroes++;
        }
    }

    // now print the array without 0
    for(int i = 0; i < numZeroes; i++) {
        outFile.print(" " + compactArray[i]);
    }

    outFile.close();
}

由于某种原因,它只是返回一串零。我认为这可能与我阅读代码的方式有关。

1 个答案:

答案 0 :(得分:1)

输入 numbers_line.txt ,其中包含一行: 1 8 3 43 4 56

1
8
3
43
4
56

<强>输出:

if else