public static void main(String[] args) throws IOException{
if (args.length == 1)
{
BufferedReader bf = new BufferedReader (new FileReader("fruit.txt"));
int linecount = 0;
String line;
//run thur the txt file to check if input exist
while (( line = bf.readLine()) != null)
{
linecount++;
int indexfound = line.indexOf(args[0]);
if (indexfound > -1) {
System.out.println("fruit exist on line " + linecount);
System.out.println("add another fruit");
System.exit(0);
} else {
BufferedWriter bw = new BufferedWriter(new FileWriter("fruit.txt", true));
String fruit = "";
fruit = args[0];
bw.write("\r\n" + fruit);
System.out.println(fruit+ "added");
}
}
f.close();
bw.close();
}
我想让程序在文本文件fruit.txt中搜索 检查水果是否已经存在。
如果存在水果,则提示用户输入另一个
否则 添加到文本文件的下一行
这是我到目前为止所得到的。 但我不确定为什么它不是我想要的。
在我的文本文件中以3个水果开始
apple
orange
pear
我加入浆果后
apple
orange
pear
berry
berry
加入甜瓜后
apple
orange
pear
berry
berry
melon
melon
melon
melon
答案 0 :(得分:2)
您只是检查第一行中的水果,如果没有找到,您将继续添加它。
您需要首先完整地读取您的文件,一个用于检查每一行,它是否包含您的水果,然后如果它不包含,则只需将该水果转储到其中。如果它包含,请拒绝它。
所以,在你的同时,你需要将其他部分移到外面。而不是在找到水果时执行System.exit()
,您可以将布尔变量设置为true,然后根据布尔变量的值,您可以决定是否添加水果。
boolean found = false;
while (( line = bf.readLine()) != null) {
linecount++;
int indexfound = line.indexOf(args[0]);
if (indexfound > -1) {
System.out.println("fruit exist on line " + linecount);
System.out.println("add another fruit");
found = true;
break;
}
}
if (!found) {
BufferedWriter bw = new BufferedWriter(new FileWriter("fruit.txt", true));
String fruit = "";
fruit = args[0];
bw.write("\r\n" + fruit);
System.out.println(fruit+ "added");
bw.close(); // You need to close it here only.
}
bf.close();