2011-12-19 27 views
29

Tôi mới bắt đầu trong Java và tôi đã đọc chủ đề cho các giá trị cho các biến qua readLine() phương pháp từ bàn phím và các chương trình cho rằng đưa ra trong cuốn sách như sauLàm thế nào để sử dụng phương thức readline() trong Java?

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 

Tôi muốn hỏi câu hỏi sau :

  1. gì được thực hiện trong báo cáo kết quả sau

    DataInputStream in = new DataInputStream(System.in);

    Nếu in là một đối tượng của DataInputStream thì có gì mới và những gì tuyên bố ở phía bên phải của tuyên bố trên làm gì?

  2. Tại sao phương pháp khác nhau đã được sử dụng để đưa các giá trị số nguyên vào intnumber và giá trị float vào floatnumber

Trả lời

55

Tôi khuyên bạn nên đi với Scanner thay vì DataInputStream. Scanner được thiết kế đặc biệt cho mục đích này và được giới thiệu trong Java 5. Xem các liên kết sau đây để biết cách sử dụng Scanner.

Ví dụ

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

Sử dụng BufferedReader và InputStreamReader lớp.

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

Hoặc sử dụng phương thức lớp học java.util.Scanner.

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

Tóm lại: Tôi sẽ cẩn thận với mã bạn sao chép. Có thể bạn đang sao chép mã xảy ra để làm việc, thay vì mã được chọn tốt.

Trong parseumber được sử dụng và giá trị floatnumberOf được sử dụng tại sao So?

Không có lý do chính đáng nào mà tôi có thể thấy, việc sử dụng API không phù hợp như bạn nghi ngờ.


Java có phân biệt chữ hoa chữ thường, không có phương pháp Readline(). Có lẽ bạn có nghĩa là readLine().

DataInputStream.readLine() không còn được dùng để sử dụng BufferedReader.readLine();

Tuy nhiên, đối với trường hợp của bạn, tôi sẽ sử dụng lớp Máy quét.

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

Nếu bạn muốn biết những gì một lớp nào tôi đề nghị bạn có một cái nhìn nhanh chóng tại Javadoc

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

6

Một DataInputStream chỉ là một trang trí trên một InputStream (mà System.in được) mà cho phép đọc bằng các phương pháp tiện lợi hơn.

Với số Float.valueOf(), tốt, điều đó rất tò mò vì Float cũng có .parseFloat(). Ở đây, mã lấy một số Float với .valueOf() biến nó thành loại float nguyên thủy sử dụng .floatValue(), không cần thiết với Java 1.5+ do tự động mở hộp.

Và như các câu trả lời khác đúng, các phương pháp này đều lỗi thời.

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){} 

    } 
} 
Các vấn đề liên quan