2011-12-19 14 views
29

Jestem początkujący w Javie i czytałem tematu podając wartości do zmiennych poprzez readLine() metody z klawiatury i programu, który podany w książce jest następującaJak korzystać z metody readline() w Javie?

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 

chcę zadać następujące pytania :

  1. Co odbywa się w następującym stwierdzeniem

    DataInputStream in = new DataInputStream(System.in);

    Jeśli in jest przedmiotem DataInputStream, to co jest nowe i co robi instrukcja po prawej stronie powyższej instrukcji?

  2. Dlaczego Różne metody zostały wykorzystane do wprowadzenia wartość całkowitą do intNumber i wartości typu float do floatnumber

Odpowiedz

55

Radzę wybrać z Scanner zamiast DataInputStream. Scanner został specjalnie zaprojektowany do tego celu i wprowadzony w języku Java 5. Zobacz poniższe linki, aby dowiedzieć się, jak korzystać z Scanner.

Przykład

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()); 
24

klas Zastosowanie BufferedReader i InputStreamReader.

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

Lub użyj metod klasy java.util.Scanner.

Scanner scan=new Scanner(System.in); 
3

Podsumowując: chciałbym zachować ostrożność, aby skopiować kod. Możliwe, że kopiujesz kod, który działa, zamiast dobrze dobranego kodu.

W parseInt numer używany jest w floatnumber valueOf jest używany Dlaczego?

Nie widzę żadnego powodu, który mógłby spowodować niespójne użycie interfejsów API, jak podejrzewasz.


Java rozróżnia wielkość liter, nie ma metody Readline(). Być może masz na myśli readLine().

DataInputStream.readLine() jest nieaktualny na rzecz użycia BufferedReader.readLine();

Jednak w twoim przypadku użyłbym klasy Scanner.

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

Jeśli chcesz wiedzieć, co klasa robi proponuję rzucić okiem na Javadoc

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

6

DataInputStream tylko dekorator nad InputStream (co System.in jest), który pozwala na czytanie przy użyciu wygodniejszych metod.

Co do Float.valueOf(), cóż, to ciekawe, ponieważ Float ma także .parseFloat(). Tutaj kod pobiera Float z .valueOf(), który przekształca się w typ pierwotny float przy użyciu .floatValue(), co jest niepotrzebne w Javie 1.5+ ze względu na automatyczne rozpakowywanie.

I jak inne słusznie twierdzą, te metody i tak są przestarzałe.

1
//this will explain you i think.... 

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 intiger terms is ="+x); 
     } 
     catch(Exception e){} 

    } 
} 
Powiązane problemy