我正在努力使它每次程序循环时保存到文件中。目前我有这个:
import java.io.*;
import java.lang.System;
import java.util.Scanner;
public class writing {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
Scanner input1 = new Scanner(System.in);
String FileName = input.next();
String x = input.next();
for(int i=0; i<'x'; i++){
System.out.println("Question");
String MainQ = input1.nextLine();
System.out.println("Option 1: ");
String Op1 = input1.nextLine();
System.out.println("Option 2: ");
String Op2 = input1.nextLine();
System.out.println("Option 3: ");
String Op3 = input1.nextLine();
System.out.println("Correct Answer (Option Number:) " );
String An1 = input1.next();
System.out.println("Quesiton 1:"+ MainQ);
System.out.println(""+ Op1);
System.out.println(""+ Op2);
System.out.println(""+ Op3);
String UAn1 = input1.next();
if (UAn1 == An1){
System.out.println("Incorrect");
System.out.println("Answer is: " + An1);
}else{
System.out.println("Correct");
}
try{
FileWriter fw = new FileWriter(FileName + ".txt");
PrintWriter pw = new PrintWriter(fw);
pw.println(MainQ);
pw.println(Op1);
pw.println(Op2);
pw.println(Op3);
pw.println(An1);
pw.close();
} catch (IOException e){
System.out.println("Error!");
}
}
}
}
没有错误消息,对不好的问题感到抱歉。我希望每次程序循环播放文本文件时都会这样:
(Question 1) Question Example
(Option 1) Option Example ....
(Question 2) Question Example
(Option 1) Option Example
......等等。但它现在的工作方式只记录了最后一个输入
这样出来: (想象一下,我使用3作为第三个问题和选项编号)
3
3
3
3
答案 0 :(得分:2)
当你在for循环中创建FileWriter
时,它总是覆盖内容,因此显然只保留最后一个内容。你应该移动线
FileWriter fw = new FileWriter(FileName + ".txt");
PrintWriter pw = new PrintWriter(fw);
在for
语句之前(和try / catch块)。
答案 1 :(得分:1)
在附加模式下打开FileWriter
,否则它只会覆盖您的文本文件而不是附加到它。请参阅FileWriter constructor documentation
。
另外,正如其他人所指出的那样,camelCase
是Java中变量名称的约定,而不是PascalCase
和must not compare strings with ==
in Java。