Как использовать метод 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
Я хочу задать следующие вопросы:
-
Что сделано в следующем заявлении?
DataInputStream in = new DataInputStream(System.in);
Если in
является объектом DataInputStream
то что нового и что делает утверждение в правой части вышеприведенного утверждения?
-
Почему для ввода целочисленного значения в значение intnumber и float в floatnumber использовались разные методы?
Ответы
Ответ 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){
}
}
}