Hier ist mein Code. Aus irgendeinem Grund wird mein BMI nicht richtig berechnet. Wenn ich die Ausgabe auf einem Taschenrechner auf Folgendes überprüfe: (10/((10/100)^2)))
Ich bekomme 1000, aber in meinem Programm bekomme ich 5. Ich bin nicht sicher, was ich falsch mache. Hier ist mein Code:
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);
}
}
Antworten:
^
in Java bedeutet nicht, sich zu einer Macht zu erheben. Es bedeutet XOR.Sie können Java verwenden
Math.pow()
Und vielleicht möchten Sie in Betracht ziehen,
double
stattint
- das ist:double height; double weight;
Beachten Sie, dass
199/100
1 ergibt.quelle
wir können benutzen
Math.pow(2, 4);
dies bedeutet 2 hoch 4 (2 ^ 4)
Antwort = 16
quelle
1<<4 = 16
Ihre Berechnung ist wahrscheinlich der Schuldige. Versuchen Sie es mit:
bmi = weight / Math.pow(height / 100.0, 2.0);
Da beide
height
und100
ganze Zahlen sind, haben Sie beim Teilen wahrscheinlich die falsche Antwort erhalten. Ist100.0
jedoch ein Doppel. Ich schlage vor, Sie machen auchweight
ein Doppel. Auch ist der^
Bediener nicht für Befugnisse. Verwenden SieMath.pow()
stattdessen die Methode.quelle
double
Werte ab. Sie können bei Bedarf jederzeit als letzten Schritt in der Berechnung runden.^
ist nicht der gewünschte Operator. Sie suchen diepow
Funktion vonjava.lang.Math
.Sie können verwenden
Math.pow(value, power)
.Beispiel:
Math.pow(23, 5); // 23 to the fifth power
quelle
Natürlich zu spät für das OP, aber immer noch ... Neuanordnung des Ausdrucks als:
int bmi = (10000 * weight) / (height * height)
Eliminiert den gesamten Gleitkommawert und wandelt eine Division durch eine Konstante in eine Multiplikation um, die schneller ausgeführt werden sollte. Die Ganzzahlgenauigkeit ist für diese Anwendung wahrscheinlich ausreichend, aber wenn dies nicht der Fall ist, dann:
double bmi = (10000.0 * weight) / (height * height)
wäre immer noch eine Verbesserung.
quelle
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);
quelle
Sie sollten die folgende Methode verwenden:
Math.pow (doppelt a, doppelt b)
Gibt den Wert des ersten Arguments zurück, der zur Potenz des zweiten Arguments erhoben wird.
quelle
1) Wir verwenden normalerweise keine int -Datentypen für Größe, Gewicht, Entfernung, Temperatur usw. (Variablen, die Dezimalstellen haben können). Daher sollten Größe, Gewicht doppelt oder schwebend sein. aber double ist genauer als float wenn Sie mehr Dezimalstellen haben
2) Und anstelle von ^ können Sie diese Berechnung wie folgt ändern:
Math.pow()
bmi = (weight/(Math.pow(height/100, 2)));
3)
Math.pow()
Methode hat unten DefinitionMath.pow(double var_1, double var_2);
Beispiel:
ich)
Math.pow(8, 2)
wird 64 (8 hoch 2) erzeugtii)
Math.pow(8.2, 2.1)
wird produziert 82.986813689753 (8,2 hoch 2,1)quelle