【问题标题】:How Do I Store Integers from File of Mixed Types into an Array? Java如何将混合类型文件中的整数存储到数组中?爪哇
【发布时间】:2014-02-19 01:03:16
【问题描述】:

我有一个包含一些整数和字符串的文本文件(扫描仪文件)。我想浏览文件,获取整数并将它们存储到整数数组(array1)中。

这是我正在使用的方法:

  public void printIntArray(Scanner file){
      int x = 0;
      while(file.hasNext()){
        array1[x] = file.nextInt();
        x++;
      }

      System.out.println("The list size is: " + (x+1));
      System.out.print("The list is:");

    for(int z=0; z <= x ; z++)
        System.out.println(array1[z]);

    }

这是我的输出:

输入文件名:input.txt
文件内容为:12 dsafa 14 daf 11 10 afa 3.5
列表大小为:1
名单是:0

array1[] 在这里声明:

import java.io.*;
import java.util.Scanner;
public class Lab2_2Menu {

private static int LENGTH = 100;
private int[] array1;
private String fileName;

public Lab2_2Menu(){

  array1 = new int [LENGTH];

}

【问题讨论】:

  • 你在哪里声明array1[]?
  • 也许尝试在 while 循环中打印 nextInt 的结果
  • 也许您已经使用了next() 方法来生成输出(12 dsafa 14 daf 11 10 afa 3.5)。如果您随后将相同的 Scanner 对象 (file) 传递给此方法,它仍在文件末尾,因此您可能应该先调用 reset()
  • 我认为这就是我在方法结束时所做的。你的意思是不同的吗?
  • @MichelMichaelMeyer 我做到了,好点。但是,我只是尝试在 while 循环的开头实现 file.reset() 。输出没有变化。

标签: java arrays file-io


【解决方案1】:

我建议使用List&lt;Integer&gt; 而不是[]。只需遍历文件并用逗号删除所有非数字字符,替换所有重复的逗号然后用逗号分割。

public static void main(String[] args) throws FileNotFoundException {
    Scanner scanner = new Scanner(new FileInputStream("input.txt"));
    printIntArray(scanner);
}

public static void printIntArray(Scanner file) {
    List<Integer> list = new ArrayList<Integer>();
    while (file.hasNext()) {
        String[] tokens = file.nextLine().replaceAll("\\D", ",").replaceAll(",+", ",").split(",");
        for (String token : tokens) {
            if(!token.equalsIgnoreCase("")){
                list.add(Integer.parseInt(token));                  
            }
        }
    }

    for (Integer num : list) {
        System.out.println(num);
    }

}

【讨论】:

  • 这行得通。非常感谢。你能解释一下while循环中发生了什么吗?这方面的新手..
  • while 循环抓取文件的每一行。然后它将文件中的所有非数字字符替换为,,然后将所有连续的逗号替换为单个逗号。然后它使用逗号作为分隔符将字符串拆分为一个数组。然后它遍历字符串数组并将所有非空字符串转换为整数,然后存储在List&lt;Integer&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 2019-08-19
  • 1970-01-01
  • 2015-04-16
相关资源
最近更新 更多