【问题标题】:Reading a paragraph from the command line on java console program从java控制台程序的命令行读取一段
【发布时间】:2022-05-08 21:12:13
【问题描述】:

以下程序中的 while 循环不会终止,因此我无法在尝试将变量段落打印到控制台的最后一行中获得输出。有类似的问题,但解决方案不切实际,我无法做到。请提出解决方案。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test {


    public static void main(String[] args) throws IOException {
        String line = "";
        String paragraph = "";

        System.out.println("Enter the text: ");
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader bufferedReader = new BufferedReader(isr);
             while ((line = bufferedReader.readLine()) != null)
             {
                  paragraph = paragraph + line + " ";
             }
          isr.close();
          bufferedReader.close();
          System.out.println(paragraph);
    }//method main ends here

}

【问题讨论】:

  • 它不会终止,因为输入值不应采用任何 NULL 值
  • 假设你没有给出任何输入,这并不意味着该行被分配了 null ,它不是 null ,你不能从命令行输入 null ,所以条件永远不会成立!!跨度>

标签: java console readline eof paragraph


【解决方案1】:

代码

while ((line = bufferedReader.readLine()) != null)

如果您不将 null 分配给 line ,并且您不能通过控制台将 null 分配给对象,那么这将永远不会是真的,这意味着您必须对其进行编码,例如输入键或任何其他字符以结束输入。

喜欢

while(!(line.equals("exit")))
{
      //whatever
}

这意味着当您在 end 键入 exit 时,程序将终止并打印该段落。

你可以试试这个sn-p

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

    public class Test {


        public static void main(String[] args) throws IOException {
            String line = "";
            String paragraph = "";

            System.out.println("Enter the text: ");
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader bufferedReader = new BufferedReader(isr);
                 do
                 {
                     line = bufferedReader.readLine();
                      paragraph = paragraph + line + " ";
                 }while(!line.equals("exit"));
              isr.close();
              bufferedReader.close();
              System.out.println(paragraph);
        }//method main ends here

    }

【讨论】:

  • anshulkatta 非常感谢您提出的解决方案。它有效!
【解决方案2】:

请替换这个 'while(!line.isBlank());'在上面的sn-p代码中

    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
    try {

        do
        {
            line = bufferedReader.readLine();
            paragraph = paragraph + line + " \n ";

        }while(!line.isBlank());

        bufferedReader.close();
        System.out.println(paragraph);
    } catch (IOException e) {
        e.printStackTrace();
    }

在控制台中粘贴所需内容后,您需要按两次回车才能看到输出

【讨论】:

    猜你喜欢
    • 2014-10-05
    • 2016-06-05
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多