Löst Problem! Java. (BMI uppgift) Tidigare krångel med DecimalFormat och fel meddelande!

Permalänk
Medlem

Löst Problem! Java. (BMI uppgift) Tidigare krångel med DecimalFormat och fel meddelande!

Hej!

Jag har precis påbörjat en yrkesutbildning till Java systemutvecklare. En av uppgifterna som jag har påbörjat är att jag ska skapa ett program som räknar ut BMI och ger användaren en kommentar kopplad till resultatet. Programmet fungerar, problemet är dock att det blir på tok för många decimaler. Max är två. Jag har valt att använda variabeln "DecimalFornat", tyvärr fungerar det inte. Om jag skriver in "Weight" 18 och "Length" 1.87, blir svaret "Ditt BMI blev 10.8667677..." Perfect BMI".

Dels ger koden fel meddelande, dels blir det för många decimaler... Vad göra?

package bmi; import java.text.DecimalFormat; public class Bframe extends javax.swing.JFrame { //Instansvariabler double weight, length, bmi; public Bframe() { initComponents(); private void RunActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: weight=Double.parseDouble(InputWeight.getText()); length=Double.parseDouble(InputLength.getText()); bmi=weight/(length*length); //out bmi DecimalFormat numberFormat; numberFormat = new DecimalFormat ("#.00"); //numberFormat outbmi.setText("Ditt BMI blev"+bmi); if (bmi>=18 && bmi <=24 ){ truth.setText("Perfect BMI!"); }else if(bmi<=17.9){ truth.setText("Your BMI is too low!"); }else if(bmi>=24.1){ truth.setText("Your BMI is too high!"); } }

Ändrade av anledningen att mitt problem blev löst!
Permalänk
Medlem

Jag vet inte hur javas DecimalFormat-klass fungerar, men du använder fel boolesk operator i den första if-satsen. Du hanterar inte heller BMI mellan 17-18 och 24-25.

Fixa din indentering så man kan läsa koden utan ansträngning också.

Visa signatur

Spela Swemantle! Du vet att du vill.

Ibland har jag fel, men då är det någon annans fel.

Permalänk
Medlem

@LemonIllusion: Tack! Jag har fixat till så att den mäter alla värden. Tror att indenteringen är lite bättre nu.

Permalänk
Medlem

if (bmi > 18 || bmi < 24)

Om bmi är mer än 18 eller mindre än 24...

Finns det något tal som inte är det?

Permalänk
Medlem

@hultron:
Ordnade det logiska felet. Fortfarande problem med för många decimaler.

Permalänk
Medlem

Du använder väl aldrig din DecimalFormater? Du skapar den men använder den inte till din output.
Prova att köra typ:
String bmiFormatted = numberFormat.format(bmi);
outbmi.setText("Ditt BMI blev"+bmiFormatted);

Javadoc borde förklara vad som är problemet annars.
https://docs.oracle.com/javase/tutorial/i18n/format/decimalFo...

Permalänk
Medlem

Nu är jag ingen hejjare på Java, men av din DecimalFormater så ser det ut som att du är intresserad av två decimaler i din bmi-variabel? Vad händer i din avslutande if-sats om bmi blir t.ex. 17.91 eller 24.01?

Permalänk
Medlem

String bmiFormatted = numberFormat.format(bmi); Löste Problemet!

@NFRS: Svårt så här i början. Suttit länge och vridit och vänt på koden! Tack så otroligt mycket för att du hjälpte mig! Fantastiskt! Nu kan jag gå och lägga mig =)!

Permalänk
Medlem

@Atise
Här har du lite magi...
Eclipse -> CTRL+SHIFT+F
Netbeans -> ALT+SHIFT+F

Du, och alla som läser din kod, kommer att tacka mig.

Visa signatur

Citera eller @philipborg om du vill att jag ska läsa dina svar.

Permalänk
Medlem

@philipborg:
Tack! Ska testa