代码工作正常,我只是好奇如何尽可能阻止char 0D在我的文本文件末尾打印。 谢谢。 这是代码,如果它有帮助。对不起,如果它是平庸的,还在学习java。
import java.util.*;
import java.io.*;
public class Driver{
String inputFile, input;
Scanner kb = new Scanner(System.in);
PrintWriter output = new PrintWriter(System.out);
File file;
BST tree = new BST();
Trie trie = new Trie();
public static void main(String[] args){
Driver driver = new Driver();
boolean done = false;
driver.initialDataFromFile();
while (!done){
done = driver.menu(true);
}
}
public void initialDataFromFile() {
System.out.println("Welcome to Project0");
System.out.println("What is the name of the input file?");
System.out.print("> ");
inputFile = kb.nextLine();
File file = new File(inputFile);
try{
Scanner scanner = new Scanner(file);
while(scanner.hasNextLine()){
String in = scanner.nextLine();
tree.insert(in);
trie.insert(in);
}
System.out.println("Finished reading the file");
}
catch(FileNotFoundException e){
System.out.println("File does not exist");
System.exit(1);
}
}
public boolean menu(boolean done){
System.out.print("Please enter your command\r>");
input = kb.next();
File file = new File(inputFile);
PrintWriter output = null;// = new PrintWriter(inputFile);
if(input.toLowerCase().equals("quit")){
System.out.println("Quitting");
System.out.println("Writing updated info to " + inputFile);
try{
output = new PrintWriter(file);
// String str = "";
// str += tree.toString();
output.println(tree.toString());
output.close();
}
catch(IOException e){
System.out.print("error");}
System.out.println("Goodbye");
return true;
}
else if(input.toLowerCase().equals("insert")){
input = kb.next();
tree.insert(input);
trie.insert(input);
System.out.println();
return false;
}
else if(input.toLowerCase().equals("delete")){
input = kb.next();
tree.delete(input);
trie.delete(input);
System.out.println();
return false;
}
else if(input.toLowerCase().equals("find")){
input = kb.next();
tree.find(input);
trie.find(input);
System.out.println();
return false;
}
else if(input.toLowerCase().equals("print")){
tree.print();
trie.print();
System.out.println();
return false;
}
else{
System.out.println("Not A Valid Choice");
System.out.println();
return false;
}
}
}
答案 0 :(得分:2)
printWriter.println("...")
将使用OS相关line.separator
属性来确定行分隔符序列:
这些方法使用平台自己的行分隔符概念而不是换行符。
恰好是您计算机上的\r
(?)(OD
)(来自PrintWriter.println()
的JavaDoc):
行分隔符字符串由系统属性
line.separator
定义,不一定是单个换行符('\n'
)。
只需使用普通print()
并附上您想要的任何字符:
printWriter.print("...\n")
...或覆盖line.separator
属性。
答案 1 :(得分:1)
您可以使用line.separator系统属性,例如,提供与操作系统无关的输出。
http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html