Java 使用输入字符串";退出“;退出终端中的程序
我正在编写一个小的.jar应用程序,它向用户请求一个字符串并将其写入Java 使用输入字符串";退出“;退出终端中的程序,java,terminal,filewriter,Java,Terminal,Filewriter,我正在编写一个小的.jar应用程序,它向用户请求一个字符串并将其写入.txt文件。我感兴趣的是,当输入字符串不是exit时,程序继续执行以下指令(即,写入日期字符串,并将输入字符串写入文本文件)。我的代码对此不起作用,请询问,它不会记录我输入的第一行,也不会记录我输入的第一个exitI。我尝试了很多方法,尝试了一个do-while循环,但没有成功。我想知道是什么问题 try{ String input = scanner(); while(!inp
.txt
文件。我感兴趣的是,当输入字符串不是exit
时,程序继续执行以下指令(即,写入日期字符串,并将输入字符串写入文本文件)。我的代码对此不起作用,请询问,它不会记录我输入的第一行,也不会记录我输入的第一个exit
I。我尝试了很多方法,尝试了一个do-while
循环,但没有成功。我想知道是什么问题
try{
String input = scanner();
while(!input.equals("exit")){
String fileLocation = "/Users/loop/Dropbox/goodTrance.txt";
FileWriter writer = new FileWriter(fileLocation,true);
writer.append(returnDate()+": ");
writer.append(input + "\n");
writer.flush();
writer.close();
input = scanner();
}
}catch(Exception e){
e.printStackTrace();
}
编辑:scanner()
是一个返回扫描字符串的静态方法<代码>返回日期()返回今天的日期
public static String returnDate(){
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Date date = new Date();
return dateFormat.format(date).toString();
}
public static String scanner(){
Scanner input = new Scanner(System.in);
String writeSomething = input.nextLine();
return writeSomething;
}
调用
scanner()
有什么作用?它看起来像是每次循环都要调用它两次,并且可能会丢弃第一个调用(但检查它),存储第二个调用而不检查它。我认为每个循环只应该调用一次
注意,您的代码还有其他问题:
- 无需使用
方法李>scanner()
- 不需要不断地重新创建Scanner对象,事实上,这样做而不释放资源,您就有资源耗尽的风险
- 相反,只需创建一次Scanner对象,并在try块中使用它,根据需要对其调用
nextLine()
- 通常最好使用
检查字符串equalsIgnoreCase(…)
- 这样检查更安全:
为了避免NPE您是否有发送文本的终端连接?如果是这种情况,终端协议将逐个字符发送,这意味着您将永远无法将scanner().equals(“exit”)设置为true,因为它只需要一个字符而不是整个字符串。请显示您的
scanner()
方法。什么是scanner?A会有帮助的。谢谢气垫船。我犯了一个非常业余的错误。我声明了两次——难怪。我声明了stringinput=scanner()代码>在while循环之外,并且input=scanner()代码>在循环的结束之前。谢谢@绿卷心菜:参见编辑。您的代码中还有其他新手问题。我将我的更改放在上面。怎么样?最后{System.exit(0);}
这就是你的意思吗?
String line = null;
while ("exit".equalsIgnoreCase(line)) {
line = scanner.nextLine();
// etc...