อื่น

Mac [Java] double can be dereferenced ไม่ได้

NS

เดฟเทย์เลอร์

โปสเตอร์ต้นฉบับ
6 พ.ย. 2550
อเบอร์ดีนเชอร์ สกอตแลนด์
  • 25 ม.ค. 2553
รหัส: |_+_|
ช่วย? ฮ่า ๆ

iShater

13 ส.ค. 2545


ชิคาโกแลนด์
  • 25 ม.ค. 2553
คุณสามารถโพสต์ข้อผิดพลาดที่เกิดขึ้นจริงได้หรือไม่ เหตุใดคำสั่ง return ของคุณจึงอยู่ก่อนสิ้นสุดวิธีการของคุณ NS

stanl8

24 ธ.ค. 2552
แมนเชสเตอร์ สหราชอาณาจักร
  • 25 ม.ค. 2553
ก่อนอื่นคุณควรลอง
ผลตอบแทน ('' + BMI);
กล่าวคือ ตัวดำเนินการ '+' จะดำเนินการต่อกัน

ประการที่สอง ฉันไม่เข้าใจว่าคำสั่ง if นั้นจะถูกดำเนินการเมื่อใด เพราะคุณมีคำสั่ง return ด้านบนที่จะดำเนินการเสมอ NS

เดฟเทย์เลอร์

โปสเตอร์ต้นฉบับ
6 พ.ย. 2550
อเบอร์ดีนเชอร์ สกอตแลนด์
  • 25 ม.ค. 2553
iShater กล่าวว่า: คุณสามารถโพสต์ข้อผิดพลาดจริงได้หรือไม่? เหตุใดคำสั่ง return ของคุณจึงอยู่ก่อนสิ้นสุดวิธีการของคุณ คลิกเพื่อขยาย...

ข้อผิดพลาดที่เกิดขึ้นจริงเป็นสองเท่าไม่สามารถอ้างอิงได้

Cromulent

2 ต.ค. 2549
ดินแดนแห่งความหวังและความรุ่งโรจน์
  • 25 ม.ค. 2553
ก่อนอื่นคุณกลับมาก่อนที่คุณจะกด if.. else คำสั่งหมายถึงพวกเขาจะไม่ถูกเรียก

ประการที่สอง เมธอดของคุณคืนค่าเป็นสองเท่า แต่คุณกำลังพยายามส่งคืนสตริงในคำสั่ง if..el ของคุณ

ประการที่สามเมื่อเรียกใช้เมธอด toString() คุณต้องใช้อ็อบเจ็กต์ Double แทนที่จะเป็นประเภทดั้งเดิม ดังนั้นคุณควรประกาศ BMI เป็นสองเท่า (java.lang.Double) แทนที่จะเป็นสองเท่า

นี่เป็นตัวอย่างง่ายๆ:

รหัส: |_+_|

chown33

พิธีกร
พนักงาน
9 ส.ค. 2552
เครื่องบิน Abysmal
  • 25 ม.ค. 2553
DaveTaylor กล่าวว่า: ข้อผิดพลาดที่เกิดขึ้นจริงเป็นสองเท่าไม่สามารถยกเลิกการอ้างอิงได้ คลิกเพื่อขยาย...

ขั้นแรก คุณไม่สามารถทำได้:
รหัส: |_+_|
เพราะ BMI ถูกประกาศเป็น สองเท่า , ประเภทดั้งเดิม Java จะไม่ทำการ autoboxing ในสถานการณ์นี้ อย่างที่ฉันจำได้

ถ้า BMI ถูกประกาศเป็น สองเท่า , คลาส wrapper สำหรับประเภทดั้งเดิม มันอาจจะใช้ได้...

ยกเว้นว่าคุณไม่สามารถทำสิ่งนี้ได้:
รหัส: |_+_|
เพราะ Java ไม่ได้เพิ่ม () ให้คุณโดยอัตโนมัติ หากคุณต้องการเรียกใช้เมธอด toString บนอ็อบเจ็กต์ คุณต้องเขียนเป็นวิธีเรียกใช้เมธอด:
รหัส: |_+_|
ถ้าคุณไม่ได้ใช้บทช่วยสอนหรือหนังสือ คุณก็ควรทำอย่างนั้นจริงๆ

lee1210

10 ม.ค. 2548
ดัลลาส, TX
  • 25 ม.ค. 2553
ฉันแค่ต้องการเพิ่มข้อสังเกตที่ดีที่ทำขึ้นโดยแนะนำให้ใช้เมธอด valueOf(double) ของ java.lang.String คุณสามารถเรียกใช้สิ่งนี้และรับสตริงกลับ การใช้โอเปอเรเตอร์ String + double ก็ใช้ได้ดีเช่นกัน แต่ไม่จำเป็นหากคุณต้องการแค่การแสดงสตริงของ double

-อ่าน

cx300

12 ก.ย. 2551
Clermont, FL
  • 25 ม.ค. 2553
java ของฉันขึ้นสนิมเล็กน้อย แต่นี่น่าจะใช่...

รหัส: |_+_|

chown33

พิธีกร
พนักงาน
9 ส.ค. 2552
เครื่องบิน Abysmal
  • 25 ม.ค. 2553
cx300 กล่าวว่า: java ของฉันมีสนิมเล็กน้อย แต่น่าจะถูกต้อง ...

รหัส: |_+_| คลิกเพื่อขยาย...

เมื่อคำนวณเป็น (น้ำหนัก/(มวล * มวล)) โดยไม่มีสัมประสิทธิ์ใดๆ หน่วยความสูงคือเมตร และหน่วยมวล (น้ำหนัก) คือกิโลกรัม หากความสูงรับได้เฉพาะเมตรจำนวนเต็ม (1, 2, 3) แสดงว่าคุณมีปัญหาความแม่นยำอย่างมาก

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

นอกจากนี้ ประเภทเหล่านี้จะไม่สร้างค่าเศษส่วนใดๆ ในผลลัพธ์ เนื่องจากการคำนวณดำเนินการทั้งหมดในรูปแบบเลขคณิตจำนวนเต็ม (เช่น การหารแบบตัดทอน) จากนั้นผลลัพธ์จำนวนเต็มจะถูกแปลงเป็นสองเท่า หากคุณต้องการการคำนวณแบบทวีคูณที่มีความเป็นไปได้ของเศษส่วน อย่างน้อยหนึ่งตัวถูกดำเนินการต้องเป็นประเภทสองเท่า

ฉันไม่คิดว่าปัญหานี้เกิดเฉพาะกับ Java คุณจะมีปัญหาคล้ายกันใน C ซึ่งมีกฎคล้ายกันสำหรับเลขจำนวนเต็มและเลขคณิตคู่