Lainnya

Mac [Java] ganda tidak dapat direferensikan

D

DaveTaylor

poster asli
6 November 2007
Aberdeenshire, Skotlandia
  • 25 Januari 2010
Kode: |_+_|
Membantu? tertawa terbahak-bahak

iShater

13 Agustus 2002


Chicagoland
  • 25 Januari 2010
Bisakah Anda memposting kesalahan yang sebenarnya? Mengapa pernyataan pengembalian Anda sebelum akhir metode Anda? S

stanl8

24 Desember 2009
Manchester, Inggris
  • 25 Januari 2010
Pertama-tama Anda harus mencoba
kembali ('' + BMI);
Artinya, operator '+' akan melakukan penggabungan.

Kedua, saya tidak mengerti kapan pernyataan if akan dieksekusi karena Anda memiliki pernyataan pengembalian di atas yang akan selalu dieksekusi D

DaveTaylor

poster asli
6 November 2007
Aberdeenshire, Skotlandia
  • 25 Januari 2010
iShater berkata: Bisakah Anda memposting kesalahan yang sebenarnya? Mengapa pernyataan pengembalian Anda sebelum akhir metode Anda? Klik untuk memperluas...

Kesalahan sebenarnya adalah ganda tidak dapat direferensikan.

Cromulent

2 Oktober 2006
Tanah Harapan dan Kemuliaan
  • 25 Januari 2010
Pertama-tama Anda kembali sebelum Anda menekan pernyataan if.. else yang berarti mereka tidak akan pernah dipanggil.

Kedua metode Anda mengembalikan dobel namun Anda mencoba mengembalikan string dalam pernyataan if..else Anda.

Ketiga saat memanggil metode toString() Anda perlu menggunakan objek Double daripada tipe primitif. Jadi, Anda harus mendeklarasikan BMI sebagai Double (java.lang.Double) daripada double.

Berikut adalah contoh sederhana:

Kode: |_+_|

chown33

moderator
Anggota staff
9 Agustus 2009
Pesawat Luar Biasa
  • 25 Januari 2010
DaveTaylor berkata: Kesalahan sebenarnya adalah ganda tidak dapat direferensikan. Klik untuk memperluas...

Pertama, Anda tidak dapat melakukan ini:
Kode: |_+_|
karena BMI dinyatakan sebagai dobel , tipe primitif. Java tidak melakukan autoboxing dalam situasi ini, seingat saya.

Jika BMI dinyatakan sebagai Dobel , kelas pembungkus untuk tipe primitif, maka itu mungkin berhasil ...

Kecuali bahwa Anda tidak dapat melakukan ini:
Kode: |_+_|
karena Java tidak secara otomatis menambahkan () untuk Anda. Jika Anda ingin memanggil metode toString pada suatu objek, Anda harus menulisnya sebagai pemanggilan metode:
Kode: |_+_|
Jika Anda tidak menggunakan tutorial atau buku, Anda seharusnya menggunakannya.

lee1210

10 Januari 2005
Dallas, Texas
  • 25 Januari 2010
Saya hanya ingin menambahkan pengamatan bagus yang dibuat sejauh ini dengan menyarankan penggunaan metode valueOf(double) Java.lang.String. Anda dapat menjalankan ini dan mendapatkan String kembali. Menggunakan operator String + double juga berfungsi dengan baik, tetapi tidak diperlukan jika yang Anda inginkan hanyalah representasi String dari double.

-Membaca C

cx300

12 September 2008
Clermont, Florida
  • 25 Januari 2010
Java saya agak berkarat tetapi ini seharusnya benar ...

Kode: |_+_|

chown33

moderator
Anggota staff
9 Agustus 2009
Pesawat Luar Biasa
  • 25 Januari 2010
cx300 berkata: Java saya sedikit berkarat tetapi ini seharusnya benar ...

Kode: |_+_| Klik untuk memperluas...

Jika perhitungannya adalah (berat/(massa * massa)) tanpa koefisien lain, satuan tinggi adalah meter dan satuan massa (berat) adalah kilogram. Jika ketinggian hanya dapat mengambil meter bilangan bulat (1, 2, 3), Anda memiliki masalah presisi yang serius.

http://en.wikipedia.org/wiki/Body_mass_index

Juga, jenis ini tidak akan pernah menghasilkan nilai pecahan apa pun dalam hasilnya, karena perhitungan dilakukan sepenuhnya dalam aritmatika bilangan bulat (yaitu memotong pembagian), kemudian hasil bilangan bulat diubah menjadi dua kali lipat. Jika Anda menginginkan perhitungan ganda dengan kemungkinan bagian pecahan, setidaknya satu operan harus bertipe ganda.

Saya tidak berpikir masalah ini unik untuk Java. Anda akan memiliki masalah serupa di C, yang memiliki aturan serupa untuk bilangan bulat dan aritmatika ganda.