无法终止Java .txt编写程序

时间:2013-10-25 15:47:34

标签: java file-io

对于java家庭作业,我需要创建一个读写.txt文件的程序。我已经能够创建一个读取.txt文件的方法。但是我在创建write方法时遇到了困难。下面是我的write方法的代码(基于此处的FileOutput类:http://www.devjavasoft.org/SecondEdition/SourceCode/Share/FileOutput.java)。

该方法成功创建.txt文件并接受用户输入,但是我无法弄清楚如何终止进程并保存文件。我认为while循环可以完成这项工作,但是当我满足While循环中的条件时,循环不会结束。我确信我的while条件逻辑存在问题,但我看不出是什么导致这是一个无限循环。

public String chooseFileOutput(){
    Scanner sc = new Scanner (System.in);
    System.out.println("Please enter the file directory for the output of the chosen txt");
    System.out.println("For Example: /Users/UserName/Downloads/FileName.txt");
    ///Users/ReeceAkhtar/Desktop/GeoIPCountryWhois.csv
    final String fileNameOUT = sc.nextLine();
    return fileNameOUT;
    }

public void writeTXT(final String fileNameOUT){
    FileOutput addData = new FileOutput (fileNameOUT);
    String newData = null;

    System.out.println("Enter text. To finish, enter 'EXIT'");

    while(!(newData == "EXIT")){
        Scanner input = new Scanner (System.in);
        addData.writeString(newData = input.nextLine());
        System.out.println("MARKER");
    } 
    addData.close();
}

4 个答案:

答案 0 :(得分:1)

始终使用equals()方法进行字符串值比较。 ==用于对象参考比较。这就是while()循环中的条件永远不会评估为false并且程序没有终止的原因。

while(!"EXIT".equals(newData)) {

答案 1 :(得分:0)

您的问题是您使用“==”运算符进行字符串值比较。在字符串中,该运算符测试两侧的两个字符串是否是同一个对象,并且当它们是具有相同值的不同对象时将返回false。你应该使用equals()方法,“EXIT”.equals(newData)

答案 2 :(得分:0)

没有用于检索扫描仪输入的赋值语句,因此难怪您的循环是不定式的; newData在程序期间为空。您需要newData = input.nextLine();

另外,你不能将赋值语句传递给方法;我很惊讶你实际上没有得到编译错误。

答案 3 :(得分:0)

用于字符串比较的java函数是“string.equals()” 因此,使用此代码更改while循环。

while("EXIT".equals(newData)==false) {.....