对于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();
}
答案 0 :(得分:1)
始终使用equals()
方法进行字符串值比较。 ==
用于对象参考比较。这就是while()
循环中的条件永远不会评估为false
并且程序没有终止的原因。
while(!"EXIT".equals(newData)) {
答案 1 :(得分:0)
您的问题是您使用“==”运算符进行字符串值比较。在字符串中,该运算符测试两侧的两个字符串是否是同一个对象,并且当它们是具有相同值的不同对象时将返回false。你应该使用equals()方法,“EXIT”.equals(newData)
答案 2 :(得分:0)
没有用于检索扫描仪输入的赋值语句,因此难怪您的循环是不定式的; newData
在程序期间为空。您需要newData = input.nextLine();
。
另外,你不能将赋值语句传递给方法;我很惊讶你实际上没有得到编译错误。
答案 3 :(得分:0)
while("EXIT".equals(newData)==false) {.....