简单的声明不会继续循环?

时间:2016-04-01 14:09:18

标签: java for-loop

我一直试图修改我的声明一段时间了,现在我要打扰你了!

我正在读取.txt文件,将其数据存储到名为temp的数组中。我正在向此数组添加一个新字符串,然后将其保存回.txt文件。简单......我知道!

我的代码如下:

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

    // Defining
    String token = "";

    // Tokensize user input.
    Scanner action = new Scanner(System.in);
    String tokenized = action.nextLine();
    String[] tokenizes = tokenized.split("\\s");

    // Read the 'greetings' part of the first sentence.

    // Open 'greetings.txt' and save data to an array.
    Scanner file1 = new Scanner(new File("greetings.txt"));
    List<String> temp = new ArrayList<String>();
    while (file1.hasNext()) {
      token = file1.next();
      temp.add(token);
    }
    temp.add(tokenized);
    file1.close();

    System.out.println(temp);
    System.out.println(temp.get(1));
    System.out.println(temp.get(2));

    int arraylength = temp.size();

    System.out.println(arraylength);

    // Write the users greetings into the .txt.
    // Overwrite old greetings array data.
    PrintWriter writing = new PrintWriter("greetings.txt");

    for (int i = 0; i < arraylength; i++) {
    writing.println(temp.get(i));
    writing.write("\n");
    writing.close();
    }
    }
}

问题是,for循环只将temp(0)保存到greetings.txt文件中。它没有在iarraylength之间骑行。

2 个答案:

答案 0 :(得分:2)

writing.close();移出for循环。在您提供的代码中,您在第一次迭代中关闭了打印编写器(事实上,您在每次迭代中调用writer.close())。也就是说,改变

for (int i = 0; i < arraylength; i++) {
    writing.println(temp.get(i));
    writing.write("\n");
    writing.close();
}

for (int i = 0; i < arraylength; i++) {
    writing.println(temp.get(i));
    writing.write("\n");
}
writing.close();

答案 1 :(得分:0)

你在for循环中的结束写作。在for循环之后移动writing.close()应该可以解决问题。