【问题标题】:How to fill an arraylist with an information from an array (java)如何用数组中的信息填充数组列表(java)
【发布时间】:2013-04-29 00:15:08
【问题描述】:

我正在尝试创建一个从 txt 文件读取的程序(这是文件“5,5,5,0”中唯一的内容)。然后我想获取该信息,将其放入一个数组中,然后使用该数组填充一个数组列表。然后使用该数组列表将信息写入文件。

这是我目前在我的类文件中的内容:

    import java.io.*;
    import java.util.Scanner;
    import java.util.ArrayList;

    public void setMoney() throws IOException {

        File moneyFile = new File ("Money.txt");
        Scanner moneyScan = new Scanner(moneyFile);

        String [] tokens = moneyFile.split(",");
        ArrayList<Integer> money = new ArrayList<Integer>(Arrays.asList(tokens));

        for(int i=0;i<tokens.length;i++){
            money.append(tokens[i]);
        }

        String s = Integer.toString(tokens[i]);

        FileOutputStream fos = new FileOutputStream("Money.txt");
        fos.write(money);
        fos.close();
}

Money.append 给我这个错误:

error: cannot find symbol
money.append(tokens[i]);
^

符号:方法追加(字符串) 位置:ArrayList类型的变量money

moneyFile.split 给我这个错误:

error: cannot find symbol
String [] tokens = moneyFile.split(",");
^
symbol:   method split(String)
location: variable moneyFile of type File

【问题讨论】:

  • 看来您已经回答了自己的问题,但您必须解析 String 才能将它们转换为 int 值。您还有其他问题吗?
  • 我同意你的观点,彼得
  • @Ty Givens Arrays.asList ? ...

标签: java


【解决方案1】:

有很多方法可以将数据从 Array 复制到 ArrayList:

最简单的一个:

for (int i = 0; i < tokens.length; i++){
    money.add(tokens[i]);
}

将数据解析为字符串

String s = Integer.toString(tokens[i]);

要将数据写入文件:

FileOutputStream fos = new FileOutputStream(path_filename_extension);
fos.write(money);
fos.close();

【讨论】:

  • 我想你可能误读了这个问题。目标不是将int 转换为字符串,也不是将数据写入文件。并且 OP 的代码已经从数组中构造了一个ArrayList
  • 这就是你投我反对票的原因!!?可能是我误解了这个问题,但我认为我离要求不远,我知道我想帮助他。最后,感谢您的反对@Vulcan
  • 我已将此添加到我的文件中,但现在我遇到了类型错误的非法开始。
  • @TyGivens,究竟是哪个语句给了你错误?
【解决方案2】:

您必须使用FileInputStream 而不是File。此外,使用您创建的Scanner 对象来获取int 值:

FileInputStream moneyFile = new FileInputStream("path/money.txt");
Scanner moneyScan = new Scanner(moneyFile);
moneyScan.useDelimiter(",");
ArrayList<Integer> money = new ArrayList<Integer>();
while(moneyScan.hasNextInt())
    money.add(moneyScan.nextInt());

【讨论】:

  • FileInputStream 是不必要的;扫描仪可以很好地读取文件。但是,其余的都是正确的。
  • @jedyobidan Really?
  • 我假设 OP 使用标准的 ASCII 字符集(正如他所说,他的文件中唯一的东西是数字和逗号)。如果它不是 ASCII,我想 FileInputStream 会起作用,尽管在构造函数中指定字符集也是如此
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-03
  • 2010-10-09
  • 2011-02-02
  • 2015-07-22
  • 2019-04-14
相关资源
最近更新 更多