Khi bạn gọi hàm, bạn đang vứt bỏ nó giá trị trả về:
half(number);
Bạn có thể có nghĩa là để viết:
number = half(number);
Ngoài ra, trong Java, các đối số được truyền theo giá trị. Điều này có nghĩa rằng, ngay cả khi bạn thay đổi number
bên trong hàm, thay đổi sẽ không truyền lại cho người gọi.
Có một số vấn đề nữa:
Vấn đề 1: Sự thay đổi đề nghị sẽ lưu trữ kết quả trong number
, mà là một biến số nguyên. Do đó, kết quả của half()
- là loại double
- sẽ bị cắt ngắn thành một số nguyên. Để tránh mất độ chính xác, bạn phải thay đổi number
thành biến số dấu chấm động hoặc lưu trữ kết quả theo một biến khác của loại thích hợp.
Vấn đề 2: Sau đây sử dụng nguyên bộ phận:
number = number/2;
Kết quả sẽ bỏ bớt một số nguyên, ví dụ: 5/2
là 2
. Sau đó, sau đó được chuyển đổi thành một số double
(2.0), đó là những gì hàm trả về.
Để khắc phục, thay đổi chức năng như vậy:
private static double half(int number) {
return number/2.0;
}
T.B. Số dấu chấm động có rất nhiều thuộc tính có thể không trực quan. Tôi khuyên bạn nên xem What Every Computer Scientist Should Know About Floating-Point Arithmetic.
Bạn gọi phương thức phân chia của bạn, nhưng bạn không gán kết quả từ nó. Hãy thử System.out.println ("5 chia cho 2 là:" + một nửa (số)); nhưng tất nhiên - tốt hơn là sử dụng biến để giữ kết quả từ hoạt động. – hovanessyan