2012-11-17 26 views
5

Tôi nhìn vào http://docs.oracle.com/javase/6/docs/api/java/lang/Double.htmlLàm cách nào để truyền một đôi vào một int trong Java?

tôi đang cố gắng

double b = Math.sqrt(absoluteNumber); 
    int c = b.intValue(); 

nhưng tôi nhận được lỗi này:

Factorise.java:13: error: double cannot be dereferenced 
int c = b.intValue(); 

Trợ giúp xin vui lòng?

+10

'int c = (int) b;' – Mysticial

+0

có thể trùng lặp của [Làm cách nào để ghép đôi thành int trong Java?] (http://stackoverflow.com/questions/2143476/how-to-cast-a-double-to-an-int-in-java) –

Trả lời

14

double không phải là một đối tượng, nó là một loại nguyên thủy.

Chỉ cần viết (int)b sẽ thực hiện công việc.

Nếu bạn thực sự cần đối tượng Double, bạn cần phải tạo một đối tượng.

2

Bạn chỉ có thể cast nó:

int c = (int)b; 
5

double là một "loại nguyên thủy", nó không có một phương pháp intValue() (trong thực tế nó không có bất kỳ phương pháp, vì nó là một nguyên thủy). Hãy thử lớp bao bọc Double, có phương thức intValue().

Double b = Math.sqrt(absoluteNumber); 
int c = b.intValue(); 

Hoặc đơn giản là sử dụng đúc:

double b = Math.sqrt(absoluteNumber); 
int c = (int) b; 
+2

Sử dụng 'Double' trong trường hợp này là quá mức cần thiết, việc truyền sẽ tốt hơn. – arshajii

+0

@ A.R.S. đúng, tôi đã thực sự chỉ sai lầm, tuy nhiên, tôi đã đề cập về nguyên thủy castingin câu trả lời của tôi bây giờ cổ vũ :) – PermGenError

0

Hãy thử

public static void main(String[] args) { 
     Double b = Math.sqrt(43253); 
     int c = b.intValue(); 

     System.out.println("#### S = " + c); 

    } 

Output

#### S = 207 
+2

Sử dụng 'Double' trong trường hợp này là quá mức cần thiết, đúc sẽ tốt hơn. – arshajii

+0

Vẫn còn điều này cũng có thể được coi là một tùy chọn –

1

Các lỗi thời gian biên dịch cụ thể trong lớp học của bạn là kết quả của cố gắng để gọi một phương thức trên một giá trị được khai báo là một loại nguyên thủy. Các loại nguyên thủy không phải là Object s và do đó không có các thuộc tính. Do đó họ không có bất kỳ phương pháp nào.

Bạn có thể có thể đúc các giá trị nguyên thủy double đến một giá trị nguyên thủy int,

double b = Math.sqrt(absoluteNumber) ; 
int a = (int) b ; 

hoặc cast double đến một Double --- sử dụng một tính năng Java gọi auto-boxing --- theo thứ tự sử dụng phương pháp intValue của giao diện Number cài đặt bởi lớp Double:

double b = Math.sqrt(absoluteNumber) ; 
int a = ((Double) b).intValue() ; 

Một cách khác là sử dụng valueOfintValue phương thức của lớp Double:

double b = Math.sqrt(absoluteNumber) ; 
int a = (Double.valueOf(b)).intValue() ; 
0

dòng đơn giản này sẽ thực hiện công việc.

integer_var_name = (int) double_var_name; 
Các vấn đề liên quan