缺少线?从.text文件中读取字符串并放入数组(java)

时间:2014-09-17 08:57:13

标签: java string arraylist

很抱歉我还是Java的新手,基本上我的最终结果是要求输入'pin code',并且该pincode将在文本文档中,但我不知道如何设置他们在下面的阵列?我的数组输出保持null而不是文档中的文本。还有一个出现的问题。

文本文档与Java类放在同一个文件夹中,我应该制作完整的路径吗?

文本中只有两个项目,例如我希望每个项目分别位于listArray [0]和listArray [1]中

如果文件内部是字面意思:

1111,john doe,5000 / n *输入* 2222,格伦约翰逊,4000

我需要左边的引脚号是数组[0],而名字是数组[1]

这是一个事后的想法并没有考虑拥有多个帐户

这是我到目前为止所尝试的内容:

public class Confirmation extends ATMrunner {
    public static void pinConfirm() {
        String[] listArray = new String[2];
        try {
            BufferedReader br = new BufferedReader(new FileReader("C:\Users\workspace\TellerMachine\src\bankATM\userlist.txt"));
            String line = "";
            while ((line = br.readLine()) != null) {
                for (int i = 0; i <= 1; i++) {
                    listArray[i] = line;
                }
            }
            br.close();
        } catch (IOException ioe) {
            System.out.println("File may be corrupted; please contact admin");
        }
        System.out.println(listArray[0]);
        System.out.println(listArray[1]);
    }
}

感谢一些帮助!

1 个答案:

答案 0 :(得分:2)

好的,首先要做的事情是:

  

完整路径给出了无效的转义序列错误。

这是因为在Java中,实际上有很多编程语言;声明String时,可以使用一些特殊字符;例如“新行”字符\n,它是一个单个字符,告诉读取字符串数据的任何内容,在该点应该有一个新行。 您可以阅读有关这些'转义序列in this Wikipedia article的更多信息。

当您声明绝对路径时,其中包含多个\个字符,这些字符用于表示这些特殊字符。因此,对于\Users,可以看到您正在尝试输入值\U的“特殊字符”,但没有。解决这个问题;只需使用\替换所有\\个字符。

其次,在读取文件的while(和for)循环中; while循环的每次迭代都会得到一个新的文件行。

(line = br.readLine()) != null

然后在此之后,您将遍历String数组,“listArray”并将每个元素设置为当前行。

for (int i = 0; i <= 1; i++) {
       listArray[i] = line;
}

这里出现的问题是,您将要读取文件的第一行,然后将数组的两个元素设置为该行。然后你要读另一行文件;并将所有元素设置为该行。然后......

要改变这种情况,我建议使用如下技术:

int index = 0;
String line = "";
while((line = br.readLine()) != null) {
    listArray[index] = line;
    index++;
}

现在,这个while循环将执行与您的相同的操作,但是使用此循环;你还要跟踪数组的当前索引。 while循环的每个循环都将读取一行并将当前索引分配给该循环,然后它将增加索引。这种方法的问题在于,如果您的文件包含多于2行,则while循环将第三次运行并尝试在数组上分配越界索引。要更改此设置,您可以尝试在尝试分配索引之前检查索引是否在数组边界内,如下所示:

while((line = br.readLine()) != null && index < listArray.length)

当然有更好的方法可以做到这一切,但所有这些让您的应用程序正常运行。