Java使用扫描仪将txt输入到二维数组

时间:2018-07-21 20:09:12

标签: java

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class test{
   public static final int SIZE = 30;
   public static final int DUE_DATE = 15;
   public static final int TASK_NUMBER = 30;
   public static void main(String[] args)throws FileNotFoundException{
      Scanner console = new Scanner(System.in);
      System.out.println("Enter input file: ");
      String inputCompletionName = console.next();

      boolean[][] completion = new boolean[TASK_NUMBER][SIZE];
      File inputCompletion = new File(inputCompletionName);
      Scanner in = new Scanner(inputCompletion);
      int i = 0, j = 0;
      for(j = 0; j < SIZE; j++){
         for(i = 0; i < TASK_NUMBER; i++){
            while(in.hasNextBoolean()){         
               boolean input = in.nextBoolean();
               completion[i][j] = input;
            }
            System.out.println(completion[i][j]);
         }

      }
   }

我尝试了这段代码。我的输入是一些布尔值,但输出只有第一个元素。真的不知道该如何解决。

我的输入文件只是一些像这样的随机布尔值。

是 假 真正 假 是

但是输出仅显示第一个元素。

1 个答案:

答案 0 :(得分:1)

问题是这样的:

while(in.hasNextBoolean()) { 
     boolean input = in.nextBoolean();
     completion[i][j] = input;
}

那是在您的2个for循环内,因此您将布尔值读入同一网格单元中。

这将起作用:

for(j = 0; j < SIZE && in.hasNextBoolean(); j++){
    for(i = 0; i < TASK_NUMBER && in.hasNextBoolean(); i++){      
        boolean input = in.nextBoolean();
        completion[i][j] = input;
        System.out.println(completion[i][j]);
    }
}