Java:保存变量问题

时间:2015-02-03 22:20:33

标签: java

我正在努力使它每次程序循环时保存到文件中。目前我有这个:

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

2 个答案:

答案 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中变量名称的约定,而不是PascalCasemust not compare strings with == in Java