我想在我的java程序中从键盘输入,直到用户输入abc
这是我编写的代码,但它不起作用。即使我输入了abc,程序仍继续从键盘输入,最后我必须自己关闭程序。它从键盘输入并将其写入名为file1.txt
的文件中import java.io.*;
import java.util.*;
public class io {
public static void main(String args[]) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("file1.txt", true));
Scanner keyboard = new Scanner(System.in);
do {
writer.write(keyboard.next());
writer.newLine();
} while (keyboard.next() != "abc");
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:2)
试试这个,它有效,只需使用while循环而不是做
代码:
import java.io.*;
import java.util.*;
public class io{
public static void main(String args[]) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("file2.txt", true));
Scanner keyboard = new Scanner(System.in);
while(!keyboard.next().equals("abc"))
{
writer.write(keyboard.next());
writer.newLine();
}
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
答案 1 :(得分:1)
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("file1.txt", true));
Scanner keyboard = new Scanner(System.in);
writer.keyboard.nextLine(); // if need write 1st string alltime
while (keyboard.hasNext()){
String buffer = keyboard.nextLine();
if (!"abc".equals(buffer)) // !!! using equals on object not null ("abc" - is not null)
{
// do if entered "abc", use break for ending while
}
// do if entered others, use variable name buffer
}
} catch (IOException e) {
e.printStackTrace();
}
答案 2 :(得分:0)
正如@JonSkeet所说 - 你两次调用keyboard.next()
而不是将结果存储在本地变量中,就像你应该的那样。其次,您要将字符串与!=
运算符进行比较,但这只会检查您是否指向完全相同的String
对象。内存中可能有数千个String对象,字符串为" abc"在其中,使用==
,它们中的任何一个都不会相等。
相反,您需要调用方法equals
。
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("file1.txt", true));
Scanner keyboard = new Scanner(System.in);
String next;
do {
next = keyboard.next();
writer.write(next);
writer.newLine();
} while (!next.equals("abc"));
writer.close();
} catch (IOException e) {
e.printStackTrace();
}