Ecco il mio codice. Per qualche ragione il mio BMI non è calcolato correttamente. Quando controllo l’output su una calcolatrice per questo: (10/((10/100)^2)))
Ottengo 1000, ma nel mio programma ottengo 5. Non sono sicuro di cosa sto facendo male. Ecco il mio codice:
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); } }
^
in Java non significa elevare ad un potere. Significa XOR.
Puoi usare java’s Math.pow()
E potresti prendere in considerazione l’uso di double
invece di int
-that è:
double height; double weight;
Nota che 199/100
valuta a 1.
possiamo usare
Math.pow(2, 4);
questo significa 2 alla potenza 4 (2 ^ 4)
risposta = 16
Il tuo calcolo è probabilmente il colpevole. Prova a usare:
bmi = weight / Math.pow(height / 100.0, 2.0);
Poiché sia l’ height
che 100
sono numeri interi, è probabile che tu abbia ottenuto la risposta sbagliata al momento della divisione. Tuttavia, 100.0
è un doppio. Ti suggerisco di fare anche un doppio. Inoltre, l’operatore ^
non è per i poteri. Utilizzare invece il metodo Math.pow()
.
^
non è l’operatore che desideri Stai cercando la funzione pow
di java.lang.Math
.
Puoi usare Math.pow(value, power)
.
Esempio:
Math.pow(23, 5); // 23 to the fifth power
Ovviamente troppo tardi per l’OP, ma comunque … Riorganizzando l’espressione come:
int bmi = (10000 * weight) / (height * height)
Elimina tutto il punto mobile e converte una divisione di una costante in una moltiplicazione, che dovrebbe essere eseguita più rapidamente. La precisione degli interi è probabilmente adeguata per questa applicazione, ma se non lo è allora:
double bmi = (10000.0 * weight) / (height * height)
sarebbe ancora un miglioramento.
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);