如何从java中的键盘输入直到某些单词

时间:2014-03-29 10:36:51

标签: java input keyboard

我想在我的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();
        }
    }
}

3 个答案:

答案 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();
}