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

Trädvy Permalänk
Medlem
Registrerad
Aug 2016

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!
Trädvy Permalänk
Medlem
Plats
SweClockers forum
Registrerad
Aug 2012

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å.

Guide: Roota din HTC - BB-Kod-knappar på Prisjakt

              Min burk - Kvävekyld till 80%
8700K@stock
1070 Ti@stock

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

Trädvy Permalänk
Medlem
Registrerad
Aug 2016

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

Trädvy Permalänk
Medlem
Registrerad
Jul 2013

if (bmi > 18 || bmi < 24)

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

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

Trädvy Permalänk
Medlem
Registrerad
Aug 2016

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

Trädvy Permalänk
Medlem
Registrerad
Apr 2012

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...

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Maj 2004

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?

Trädvy Permalänk
Medlem
Registrerad
Aug 2016

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 =)!

Trädvy Permalänk
Medlem
Plats
Västra götaland
Registrerad
Sep 2012

@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.

Kan låta oavsiktligt aggressiv.
Citera eller @philipborg om du vill att jag ska läsa dina svar.

Trädvy Permalänk
Medlem
Registrerad
Aug 2016

@philipborg:
Tack! Ska testa