首页 > 解决方案 > Java使用扫描仪将txt输入到二维数组

问题描述

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

      }
   }

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

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

真假真假真假

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

标签: java

解决方案


问题是这样的:

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

推荐阅读