关于java中read()和readLine()的用法?

关于java中read()和readLine()的用法?,java,Java,我无法使用以下java代码读取字符串。请告诉我需要做哪些更改。 代码如下: import java.lang.*; import java.io.*; public class ioreadver1 { public static void main(String [] args)throws Exception` { PrintWriter pw = new PrintWriter(new FileOutputStream(new File("ioreadver

我无法使用以下java代码读取字符串。请告诉我需要做哪些更改。 代码如下:

import java.lang.*;
import java.io.*;

public class ioreadver1
{
    public static void main(String [] args)throws Exception`
    {   
    PrintWriter pw = new PrintWriter(new FileOutputStream(new File("ioreadver1ans.txt")));
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);

    //taking input
    String str1 = "Enter the Character:";
    System.out.println("Enter the Character: ");
    char ch =(char)br.read();
    System.out.println("Enter the String:");
    String str= br.readLine();
    pw.write(str1);
    pw.write(ch);
    pw.write("\n");
    pw.write(str);
    pw.flush();
    pw.close();
    }
}

调用
br.read()
后,将读取字符,但缓冲区中仍将保留换行符。在第一次读取后添加对
br.readLine()
的额外调用以删除此项

或者简单地使用
br.readLine()
而不是
br.read()
并从结果中提取字符。

问题(我认为)与此有关:

  char ch = (char) br.read();
这将从输入流中读取一个字符。但当您要求用户输入字符时,他/她需要输入击键;i、 e.字符,后跟ENTER键。并且回车键至少会产生一个以上的字符-CR、NL或CRNL。。。取决于操作系统

但您不会显式读取并丢弃行尾字符。相反,它们留给本声明阅读:

  String str= br.readLine();
。。。这给了你一个空字符串

hy 请查看您的代码。我刚刚重新安排了你的函数调用

public static void main(String args[]) throws IOException
    {
            PrintWriter pw = new PrintWriter(new FileOutputStream(new File("ioreadver1ans.txt")));
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader br = new BufferedReader(isr);

            //taking input
            String str1 = "Enter the Character:";
           // 
            System.out.println("Enter the String:");
            String str= br.readLine();
            System.out.println("Enter the Character: ");
            char ch =(char)br.read();

            pw.write(str1);
            pw.write(ch);
            pw.write("\n");
            pw.write(str);
            pw.flush();
            pw.close();
        }

编辑上一个问题。不要。这个问题几乎肯定会被解决。这是我在文档中找不到的深刻见解