Java

2012-01-12 5 views
43

bir güce bir sayı Raising İşte benim kodudur. Nedense BMI'm doğru hesaplanmamış. (10/((10/100)^2))) Ben 1000 olsun, ama benim programda, ben yanlış yapıyorum emin değilim 5. olsun: Bunun için bir hesap makinesinde çıktı danışın. javaJava

import javax.swing.*; 

public class BMI { 
    public static void main(String args[]) { 
     int height; 
     int weight; 
     String getweight; 
     getweight = JOptionPane.showInputDialog(null, "Please enter your weight in Kilograms"); 
     String getheight; 
     getheight = JOptionPane.showInputDialog(null, "Please enter your height in Centimeters"); 
     weight = Integer.parseInt(getweight); 
     height = Integer.parseInt(getheight); 
     double bmi; 
     bmi = (weight/((height/100)^2)); 
     JOptionPane.showMessageDialog(null, "Your BMI is: " + bmi); 
    } 
} 
+14

Bu Aradığınız operatör değil. – Malfist

+2

@Malfist Sana bir Jedi –

+1

@Malfist lol =) Gördüğüm – stytown

cevap

80

^ bir kuvvetine yükseltilecek anlamına gelmez: İşte benim kodudur. XOR demek. 199/100 1.

+3

gibi yüzünün önünde elinizi sallayarak görebilirsiniz yazdıklarını okurken, ben yanlış yaptığını çok basit bir şey olması gerektiğini biliyordu. Teşekkür ederim. –

+2

@stytown: Sorunu çözdüyse cevabı kabul etmelisin. – unholysampler

3

^ olarak değerlendirilirse

double height; 
double weight; 

Not olun: Sen java en Math.pow()


kullanabilirsiniz Ve -yani double yerine int kullanarak düşünebilirsiniz

İstediğiniz operatör değil. java.lang.Math'un pow işlevini arıyorsunuz.

Sen Math.pow(value, power) kullanabilirsiniz.

Örnek:

Math.pow(23, 5); // 23 to the fifth power 
8

Kişisel hesaplama olasılıkla suçlu. kullanmayı deneyin:

bmi = weight/Math.pow(height/100.0, 2.0); 

height hem Çünkü ve 100 tam sayılardır, bölünürken, büyük olasılıkla yanlış cevap elde edildi. Ancak, 100.0 bir çifttir. Ben weight bir çift de yapmanızı öneririm. Ayrıca, ^ işleci, güçler için değildir. Bunun yerine Math.pow() yöntemini kullanın.

+1

Teşekkür ederim.Şimdi bana 1000 vermek yerine, 10 ve 10'u ağırlık ve boy olarak girdiğimde bana 999.9999 veriyor. Yine de çok daha iyi çalışıyor gibi görünüyor. bmi = ağırlık/Math.pow (yükseklik/100.00,2.00); – stytown

+1

Bu, çifte değerlerinizin hassasiyetine bağlıdır. Gerektiğinde hesaplamanın son adımı olarak her zaman devam edebilirsiniz. – Bernard

+0

Teşekkür ederim Bernard, buna bakacağım. – stytown

2
int weight=10; 
int height=10; 
double bmi; 
bmi = weight/Math.pow(height/100.0, 2.0); 
System.out.println("bmi"+(bmi)); 
double result = bmi * 100; 
result = Math.round(result); 
result = result/100; 
System.out.println("result"+result); 
+1

Saf kod yerine bir açıklama gönderin. = D –

8

biz hala tabii OP için çok geç = iktidar 4 (2^4)

cevaba 16

+0

, sadece 2'nin güçlerini istediğinizde bitshifting kullanın: '1 << 4 = 16' – Xerus

3

Math.pow(2, 4); 

demek 2 kullanabilirsiniz ancak ... İfadenin yeniden düzenlenmesi şu şekilde oldu:

tüm kayan nokta ortadan kaldırır ve daha hızlı yürütmek gereken bir çarpma, sabit bir tarafından bir bölünme dönüştürür. Tamsayı kesinliği muhtemelen bu uygulama için yeterlidir, ancak eğer o değilse:

double bmi = (10000.0 * weight)/(height * height) 

hala bir iyileştirme olacaktır.