java - Printer Writer 让我输入两次以循环一次

标签 java

我知道这很容易解决,但我已经为此奋斗了一个小时。我需要不断从用户那里获取单词,直到他们输入“退出”并将其写入进程中的文件中。但问题是,它出现了“输入单词:”,但是当我输入它并按回车键时,它不会接受它,直到我第二次写一些东西,然后它才能工作并使用第二个。

    //@Author: Tyler Cage
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class week12Program1 {
    public static void main(String[] args) throws FileNotFoundException, IOException{
        //declaring the writer and initlizing it
        FileOutputStream fileByteStream = new FileOutputStream("C:/Users/tyl3r/Desktop/test.txt");
        PrintWriter outFS = new PrintWriter(fileByteStream);
        Scanner scnr = new Scanner(System.in);
        //declainrg ints
        int i = 0;

        //open file and print
        while(i<1){ 
         System.out.println("Enter word: ");   
         outFS.println(scnr.next());
         outFS.flush();
            if(scnr.next().equalsIgnoreCase("quit")){
                 System.out.println("Shutting down...");
                 fileByteStream.close();
                 i++;
         }
        }

    }
}

最佳答案

这一段代码的问题:

while(i<1){ 
      System.out.println("Enter word: ");   
      outFS.println(scnr.next()); // first time scanning input
      outFS.flush();
       if(scnr.next().equalsIgnoreCase("quit")){ // second time scanning input
             System.out.println("Shutting down...");
             fileByteStream.close();
             i++;
}

实际上您正在阅读输入两次,因此您需要再次输入该单词才能获得预期结果。

要解决这个问题,你只需要声明变量来保存输入,然后在 if 条件下检查变量内容:

while(i<1){ 
      System.out.println("Enter word: ");
      String word = scnr.next(); 
      outFS.println(word);
      outFS.flush();
        if(word.equalsIgnoreCase("quit")){ 
              System.out.println("Shutting down...");
              fileByteStream.close();
              i++;
}

关于java - Printer Writer 让我输入两次以循环一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47459908/

相关文章:

java - Java 中的 equals() 和 hashCode() 契约

java - set 方法不适用于 HttpsURLConnection

java - 拆分字符串类型并放入循环中的新数组中

java - Algid 解析错误,不是序列

JavaFX 通过 setOnKeyPressed 更新当前位置

java - 在 Java 中打印 2 个句子 ,' ) expected'

java - 从字符串数组中删除特定字符串

java - Java中如何避免instanceof

c# - Java RSA 加密

java - Arrays.sort 只是出于某种原因不排序