如何在Java中使用readline()方法?

Jun*_*tes 41 java io readline

我是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
Run Code Online (Sandbox Code Playgroud)

我想问下列问题:

  1. 在以下声明中做了什么?

    DataInputStream in = new DataInputStream(System.in);
    
    Run Code Online (Sandbox Code Playgroud)

    如果in是一个对象DataInputStream那么什么是新的,上面语句右边的语句是做什么的?

  2. 为什么使用不同的方法将整数值放入intnumber并将float值放入floatnumber?

Jom*_*oos 68

我建议你去,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());
Run Code Online (Sandbox Code Playgroud)


ada*_*ost 30

使用BufferedReader和InputStreamReader类.

BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in));
String line=buffer.readLine();
Run Code Online (Sandbox Code Playgroud)

或者使用java.util.Scanner类方法.

Scanner scan=new Scanner(System.in);
Run Code Online (Sandbox Code Playgroud)


fge*_*fge 6

A DataInputStream只是一个InputStream(它System.in)的装饰器,它允许使用更方便的方法进行读取.

至于那个Float.valueOf(),好奇,因为Float也有.parseFloat().这里的代码抓取了一个Float使用.valueOf()它的原始float类型.floatValue(),由于自动取消装箱,这对于Java 1.5+是不必要的.

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


Pet*_*rey 5

总结:我会小心你复制的代码.您可能正在复制恰好工作的代码,而不是精心选择的代码.

在intnnumber中,使用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();
Run Code Online (Sandbox Code Playgroud)

如果你想知道什么是课程,我建议你快速浏览一下Javadoc.


Pra*_*har 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){
        }
    }
}
Run Code Online (Sandbox Code Playgroud)