0

对于 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

4 回答 4

1

始终使用equals()字符串值比较的方法。==用于对象引用比较。这就是while()循环中的条件永远不会计算false并且程序不会终止的原因。

while(!"EXIT".equals(newData)) {
于 2013-10-25T15:48:46.367 回答
0

Your problem is that you are using the "==" operator for string value comparisons. In Strings, that operator tests whether the two Strings on either side are the same object, and will return false when they are different objects with the same value. You should use the equals() method, "EXIT".equals(newData)

于 2013-10-25T15:50:19.073 回答
0

用于字符串比较的 java 函数是“string.equals()”所以用这段代码改变 while 循环。

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

于 2013-10-31T18:01:08.607 回答
0

没有赋值语句来检索扫描器输入,所以难怪你的循环是不定式的;newData在程序期间为空。你需要一个newData = input.nextLine();.

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

于 2013-10-25T15:54:57.683 回答