关于java中read()和readLine()的用法?
我无法使用以下java代码读取字符串。请告诉我需要做哪些更改。 代码如下:关于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
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();
}
编辑上一个问题。不要。这个问题几乎肯定会被解决。这是我在文档中找不到的深刻见解