Подтвердить что ты не робот

Как использовать метод readline() в Java?

Я начинаю на 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

Я хочу задать следующие вопросы:

  1. Что сделано в следующем заявлении?

    DataInputStream in = new DataInputStream(System.in);
    

    Если in является объектом DataInputStream то что нового и что делает утверждение в правой части вышеприведенного утверждения?

  2. Почему для ввода целочисленного значения в значение intnumber и float в floatnumber использовались разные методы?

4b9b3361

Ответ 1

Я советую вам пойти с 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());

Ответ 2

Используйте классы BufferedReader и InputStreamReader.

BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in));
String line=buffer.readLine();

Или используйте методы класса java.util.Scanner.

Scanner scan=new Scanner(System.in);

Ответ 3

A DataInputStream является просто декоратором над InputStream (который System.in), который позволяет читать с использованием более удобных методов.

Что касается Float.valueOf(), то, что любопытно, потому что Float имеет .parseFloat(). Здесь код захватывает Float с помощью .valueOf(), который превращается в примитивный тип Float, используя .floatValue(), что не требуется в Java 1.5+ из-за автоматической распаковки.

И, как справедливо говорят другие ответы, эти методы в любом случае устарели.

Ответ 4

Вкратце: я буду осторожен относительно того, какой код вы копируете. Возможно, вы копируете код, который работает, а не хорошо подобранный код.

В intnumber используется parseInt и используется значение floatnumberOf, почему так?

У меня нет веской причины. Это противоречивое использование API, как вы подозреваете.


Java чувствительна к регистру, и нет метода Readline(). Возможно, вы имеете в виду readLine().

DataInputStream.readLine() устарел в пользу использования BufferedReader.readLine();

Однако для вашего случая я бы использовал класс Scanner.

Scanner sc = new Scanner(System.in);
int intNum = sc.nextInt();
float floatNum = sc.nextFloat();

Если вы хотите знать, что класс, я предлагаю вам, вы быстро посмотрите на Javadoc.

Ответ 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){
        }
    }
}