从Java中的输入文件中读取

时间:2015-05-11 14:18:48

标签: java file-io io

我一直在试图弄清楚如何执行此代码,但无法弄清楚如何更改当前代码的工作方式。

问题是:

  

编写程序以从输入文件名“input5_01.txt”读取整数N(2 <= N <= 30),然后编写函数以创建具有来自范围的随机整数的N×N矩阵[ 10,99]。将矩阵输出到   输出文件名“output5_01.txt”

目前,这是我的代码:

public static final int UPPER = 99, LOWER = 10;

public static void main(String[] args) throws FileNotFoundException {
    int n = 5;
    int[][] arr = new int[n][n];
    Scanner inputFile = new Scanner(new File("input5_01.txt"));

      //read in an int (n) from input file
    while (inputFile.hasNext()) {
        if (inputFile.hasNextInt() >= 2 && inputFile.hasNextInt() <= 30) {
            n = inputFile.nextInt();
        } else {
            inputFile.next();
        }
    }

     //assigning random numbers to array
    Random rand = new Random();
    for (int r = 0; r < arr.length; r++) {
        for (int c = 0; c < arr[0].length; c++) {
            arr[r][c] = rand.nextInt(UPPER - LOWER + 1) + LOWER;
        }
        System.out.println();
    }
}

真的,我唯一的问题是:

if(inputFile.hasNextInt() >= 2 && inputFile.hasNextInt() <= 30)

我可以做些什么来完成这项工作?

2 个答案:

答案 0 :(得分:0)

根据JavaDochasNextInt()返回一个布尔值,表示流中是否有另一个整数值,它不返回下一个整数的值。因此,本节:

while(inputFile.hasNext()){
  if(inputFile.hasNextInt() >= 2 && inputFile.hasNextInt() <= 30)
    n = inputFile.nextInt();   
  else
    inputFile.next();
}

需要阅读类似的内容:

int nextInt = -1;
boolean intFound = false;

while(inputFile.hasNext()){
  if(inputFile.hasNextInt()) {
      nextInt = inputFile.nextInt();
      if((nextInt >= 2) && (nextInt <= 30) {
          intFound = true;
          break;
      }
  }   
}

if(intFound) {
     ... //Populate your matrix according to the value of nextInt
}

答案 1 :(得分:0)

如果您的输入文件只有ints,那么我相信这也应该有效:

while(inputFile.hasNextInt()){
  int nextIntValue = inputFile.nextInt();
  if(nextIntValue >= 2 && nextIntValue <= 30) {
    n = nextIntValue ;   break;
  }
  else
    inputFile.next();
}

它还可以避免不必要的电话。