Lain-Lain

Mac [Java] double tidak boleh dinyahrujuk

D

DaveTaylor

Poster asal
6 Nov 2007
Aberdeenshire, Scotland
  • 25 Jan 2010
Kod: |_+_|
bantuan? lol

iShater

13 Ogos 2002


Chicagoland
  • 25 Jan 2010
Bolehkah anda menyiarkan ralat sebenar? Mengapa penyata pulangan anda sebelum kaedah anda berakhir? S

stanl8

24 Dis 2009
Manchester, UK
  • 25 Jan 2010
Pertama sekali anda harus mencuba
pulangan ('' + BMI);
Iaitu, operator '+' akan melakukan penggabungan.

Kedua, saya tidak faham bila penyataan if akan dilaksanakan kerana anda mempunyai penyataan pulangan di atas yang akan sentiasa dilaksanakan D

DaveTaylor

Poster asal
6 Nov 2007
Aberdeenshire, Scotland
  • 25 Jan 2010
iShater berkata: Bolehkah anda menyiarkan ralat sebenar? Mengapa penyata pulangan anda sebelum kaedah anda berakhir? Klik untuk mengembangkan...

Ralat sebenar adalah dua kali ganda tidak boleh dinyahrujuk.

Cromulent

2 Okt 2006
Tanah Harapan dan Kemuliaan
  • 25 Jan 2010
Pertama sekali anda kembali sebelum anda memukul jika anda.. jika tidak kenyataan yang bermakna mereka tidak akan dipanggil.

Kedua kaedah anda mengembalikan dua kali ganda namun anda cuba mengembalikan rentetan dalam pernyataan if.. else anda.

Ketiga apabila memanggil kaedah toString() anda perlu menggunakan objek Double daripada jenis primitif. Oleh itu, anda harus mengisytiharkan BMI sebagai Double (java.lang.Double) daripada berganda.

Berikut adalah contoh mudah:

Kod: |_+_|

chown33

Moderator
Ahli staf
9 Ogos 2009
Pesawat Abysmal
  • 25 Jan 2010
DaveTaylor berkata: Ralat sebenar adalah dua kali ganda tidak boleh dinyahrujuk. Klik untuk mengembangkan...

Pertama, anda tidak boleh melakukan ini:
Kod: |_+_|
kerana BMI diisytiharkan sebagai berganda , jenis primitif. Java tidak melakukan autoboxing dalam situasi ini, seperti yang saya ingat.

Jika BMI diisytiharkan sebagai berganda , kelas pembalut untuk jenis primitif, maka ia mungkin berfungsi...

Kecuali anda tidak boleh melakukan ini:
Kod: |_+_|
kerana Java tidak secara automatik menambah () untuk anda. Jika anda ingin menggunakan kaedah toString pada objek, anda perlu menulisnya sebagai penyeruan kaedah:
Kod: |_+_|
Jika anda tidak menggunakan tutorial atau buku, anda sepatutnya begitu.

lee1210

10 Jan 2005
Dallas, TX
  • 25 Jan 2010
Saya hanya mahu menambah pemerhatian baik yang dibuat setakat ini dengan mencadangkan penggunaan kaedah valueOf(double) java.lang.String. Anda boleh menjalankan ini dan mendapatkan String kembali. Menggunakan pengendali String + double juga berfungsi dengan baik, tetapi tidak diperlukan jika semua yang anda mahukan ialah representasi String bagi double.

-Baca C

cx300

12 Sep 2008
Clermont, FL
  • 25 Jan 2010
Java saya sedikit berkarat tetapi ini sepatutnya betul...

Kod: |_+_|

chown33

Moderator
Ahli staf
9 Ogos 2009
Pesawat Abysmal
  • 25 Jan 2010
cx300 berkata: Java saya sedikit berkarat tetapi ini sepatutnya betul...

Kod: |_+_| Klik untuk mengembangkan...

Apabila pengiraan adalah (berat/(jisim * jisim)) tanpa pekali lain, unit ketinggian ialah meter dan unit jisim (berat) ialah kilogram. Jika ketinggian hanya boleh diambil pada meter integer (1, 2, 3), anda menghadapi masalah ketepatan yang serius.

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

Selain itu, jenis ini tidak akan menghasilkan sebarang nilai pecahan dalam hasil, kerana pengiraan dijalankan sepenuhnya dalam aritmetik integer (iaitu pembahagian pemotongan), maka hasil integer ditukar kepada dua kali ganda. Jika anda mahukan pengiraan berganda dengan kemungkinan bahagian pecahan, sekurang-kurangnya satu operan mestilah daripada jenis berganda.

Saya tidak fikir masalah ini unik untuk Java. Anda akan menghadapi masalah yang sama dalam C, yang mempunyai peraturan yang sama untuk integer dan aritmetik berganda.