如何在 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);
    

    如果inDataInputStream 的对象,那么什么是新的,上面语句右侧的语句是做什么的?

    为什么使用不同的方法将整数值放入 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 只是 InputStreamSystem.in 是)之上的装饰器,它允许使用更方便的方法进行读取。

至于Float.valueOf(),这很好奇,因为Float 也有.parseFloat()。这里的代码使用.valueOf() 抓取Float 并使用.floatValue() 将其转换为原始float 类型,由于自动拆箱,Java 1.5+ 不需要。

正如其他答案所说的那样,这些方法无论如何都已经过时了。

【讨论】:

【参考方案4】:

我建议您使用Scanner 而不是DataInputStreamScanner 专门为此目的设计并在 Java 5 中引入。请参阅以下链接以了解如何使用 Scanner

Java Documentation Java Tutorial

例子

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() 的行为

java中readLine()方法为什么有的行读不到?

带有 python 2.7 的 Windows 上的 Readline 功能

如何取消 ConsoleReader.readLine()

java 对readLine扩展添加行号样式

Java 中 BufferedReader.readLine() 的最大行长?