【问题标题】:How do I find the number of lines of a file and input the number into the array size in Java?如何找到文件的行数并将数字输入到 Java 中的数组大小中?
【发布时间】:2014-12-08 23:21:00
【问题描述】:

这是一个相对简单的问题,但由于某种原因我被困了一个小时。我犯了什么愚蠢的错误???请帮忙!

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class Program2 {
    public static void main(String[] args) throws FileNotFoundException {
        Scanner scanner = new Scanner(new File("numbers.txt"));

        int count = 0;
        while (scanner.hasNext()) {
            count ++;
            scanner.nextLine();
        }
        int[] array = new int[count];
        for (int i = 0; i < array.length; i++) {
            array[i] = scanner.nextInt();
        }
        for (int i = array.length - 1; i >= 0; i--) {
            System.out.println(array[i]);
        }
    }
}

【问题讨论】:

  • 请更具体地说明什么不起作用,以及您期望发生什么。
  • 您遇到了什么错误?你调试过你的代码吗?你有什么问题?
  • 你已经这样做了:(int[] array = new int[count];)。您需要将scanner.hasNext() 更改为scanner.hasNextLine()

标签: java arrays loops count java.util.scanner


【解决方案1】:

哦...我不得不扫描文件两次 -.- FML...

已发布答案:

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class Program2 {
    public static void main(String[] args) throws FileNotFoundException {

        Scanner scanner = new Scanner(new File("numbers.txt"));

        int count = 0;
        while (scanner.hasNext()) {
            count ++;
            scanner.nextLine();
        }

        Scanner scanner1 = new Scanner(new File("numbers.txt"));

        int[] array = new int[count];
        for (int i = 0; i < array.length; i++) {
            array[i] = scanner1.nextInt();
        }
        for (int i = array.length - 1; i >= 0; i--) {
            System.out.println(array[i]);
        }
    }
}

【讨论】:

  • 这是数组的限制。 ArrayList 会好得多,因为您不需要在制作时指定大小。
【解决方案2】:

我对使用 Scanner 不是很熟悉,我更喜欢用户 BufferReader。这是我的代码,让我们看看它是否对解决您的问题有用。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;

public class CoountingLines {

    public static void main(final String[] args) throws FileNotFoundException {

        final BufferedReader br = new BufferedReader(new FileReader(new File("/Volumes/nuquer/work/numbers.txt")));
        String line;

        Integer count = 0;
        final HashMap<Integer, String> map = new HashMap<Integer, String>();
        try {
            while ((line = br.readLine()) != null) {
                map.put(count, line.toString());
                count++;
            }

            final int[] array = new int[count];
            for (int i = 0; i < array.length; i++) {
                array[i] = new Integer(map.get(i));
            }

            for (int i = array.length - 1; i >= 0; i--) {
                System.out.println(array[i]);
            }

        } catch (final IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

【讨论】:

    猜你喜欢
    • 2015-05-02
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多