如何在 Java 中使用 readline() 方法?
Posted
技术标签:
【中文标题】如何在 Java 中使用 readline() 方法?【英文标题】:How to use readline() method in Java? 【发布时间】:2012-01-23 12:40:22 【问题描述】:我是 Java 初学者,我正在阅读通过键盘上的 readLine()
方法为变量赋值的主题。书中给出的程序如下:
import java.io.DataInputStream
class Reading
public static void main(String args[])
DataInputStream in = new DataInputStream(System.in);
int intnumber=0;
float floatnumber=0.0f;
try
system.out.println("enter an integer: ");
intnumber = Integer.parseInt(in.readline());
system.out.println("enter a float number: ");
floatnumber = Float.valueOf(in.readline()).floatvalue();
// Rest of code
我想问以下问题:
下面的语句做了什么?
DataInputStream in = new DataInputStream(System.in);
如果in
是DataInputStream
的对象,那么什么是新的,上面语句右侧的语句是做什么的?
为什么使用不同的方法将整数值放入 intnumber 和将浮点值放入 floatnumber?
【问题讨论】:
【参考方案1】:使用 BufferedReader 和 InputStreamReader 类。
BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in));
String line=buffer.readLine();
或者使用java.util.Scanner
类方法。
Scanner scan=new Scanner(System.in);
【讨论】:
【参考方案2】:总之:我会小心你复制的代码。您可能正在复制恰好可以工作的代码,而不是精心挑选的代码。
在intnumber中使用了parseInt,在floatnumber中使用了valueOf,为什么会这样?
我没有充分的理由。正如您所怀疑的那样,这是对 API 的不一致使用。
Java 区分大小写,没有任何Readline()
方法。也许你的意思是 readLine()。
DataInputStream.readLine() 已弃用,取而代之的是使用 BufferedReader.readLine();
但是,对于您的情况,我会使用 Scanner 类。
Scanner sc = new Scanner(System.in);
int intNum = sc.nextInt();
float floatNum = sc.nextFloat();
如果你想知道什么课程,我建议你快速查看the Javadoc。
【讨论】:
【参考方案3】:DataInputStream
只是 InputStream
(System.in
是)之上的装饰器,它允许使用更方便的方法进行读取。
至于Float.valueOf()
,这很好奇,因为Float
也有.parseFloat()
。这里的代码使用.valueOf()
抓取Float
并使用.floatValue()
将其转换为原始float
类型,由于自动拆箱,Java 1.5+ 不需要。
正如其他答案所说的那样,这些方法无论如何都已经过时了。
【讨论】:
【参考方案4】:我建议您使用Scanner
而不是DataInputStream
。 Scanner
专门为此目的设计并在 Java 5 中引入。请参阅以下链接以了解如何使用 Scanner
。
例子
Scanner s = new Scanner(System.in);
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
【讨论】:
【参考方案5】:这会解释它,我想......
import java.io.*;
class reading
public static void main(String args[]) throws IOException
float number;
System.out.println("Enter a number");
try
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(in);
String a = br.readLine();
number = Float.valueOf(a);
int x = (int)number;
System.out.println("Your input=" + number);
System.out.println("Your input in integer terms is = " + x);
catch(Exception e)
【讨论】:
以上是关于如何在 Java 中使用 readline() 方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 java.nio.channels.FileChannel 读取到 ByteBuffer 实现类似 BufferedReader#readLine() 的行为