尝试使阵列具有自动类型时出错

时间:2018-10-28 07:31:53

标签: java arrays java.util.scanner

我正在尝试编写一个读取文本文件的代码,并将每一行存储到一个数组中,这是我的代码:

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

public class JavaPractice
{
public static void main (String[] args) throws Exception
{
    File file = new File("C:/Users/Andrew/Desktop/textFile.txt");
    Scanner fileScanner = new Scanner(file);
    int x = 1;
    while (fileScanner.hasNextLine())
    {
        fileScanner.nextLine();
        x++;
    }
    String names[] = new String[x];
    Scanner reader = new Scanner(file);
    while (reader.hasNextLine())
    {
        names[x] = reader.nextLine();
        System.out.println(names[x]);
        x--;
    }
    System.out.println(names[0]);


    fileScanner.close();
    reader.close();
}
}

我要去做的是让fileScanner读取我的文件有多少行,将其存储到X中,然后创建一个具有X个值的数组,然后开始将我的值存储到该数组中。

1 个答案:

答案 0 :(得分:1)

问题出在数组声明中以及在while循环中访问数组的方式

    String names[] = new String[x];
    Scanner reader = new Scanner(file);
    while (reader.hasNextLine())
    {
        names[x] = reader.nextLine();
        System.out.println(names[x]);
        x--;
    }

您要声明大小为x的数组

String names[] = new String[x];

在while循环中,您正在这样访问,

names[x] = reader.nextLine();

这将遇到ArrayIndexOutOfBounds异常,因为您只能访问数组中的0到x-1个元素,

您应该尝试做到这一点,

names[x-1] = reader.nextLine();
System.out.println(names[x-1]);

此外,您应该声明x = 0而不是x = 1;这样您的行就可以正确计数了。