Elevare un numero a un potere in Java

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);