Shauna Vronces Shauna Vronces - 4 months ago 44
Java Question

Creating an Ideal Weight Calculator in Netbeans

I am taking a Comp Sci course, so I am a beginner at coding. We have to make an ideal weight calculator that accepts Name, Height, and Desired System of measurement from the user, and then outputs them with their ideal weight in whatever system of measurement they choose. This particular program has been giving me some trouble for the past few days. It won't run, and the error code reads:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Height:"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
at java.lang.Double.parseDouble(Double.java:540)
at U2_A8_IdealWeightCalculator.btnCalculateActionPerformed(U2_A8_IdealWeightCalculator.java:170)
at U2_A8_IdealWeightCalculator.access$000(U2_A8_IdealWeightCalculator.java:13)
at U2_A8_IdealWeightCalculator$1.actionPerformed(U2_A8_IdealWeightCalculator.java:76)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)


I am lost on ideas.

// Declare variables
String strName, strSystemOfMeasurement, strHeight, strOutputIdealWeight;
Double dblHeight, dblOutputIdealWeight;
char chrSystemOfMeasurement;

//Variable Assignment
strName = this.txtInputName.getText();
strSystemOfMeasurement = this.txtInputSystemOfMeasurement.getText();
strHeight = this.lblInputHeight.getText();

//Process
if (strSystemOfMeasurement.charAt(0)=='M'){
dblHeight = Double.parseDouble(strHeight);
dblOutputIdealWeight = dblHeight*dblHeight*25;
strOutputIdealWeight = Double.toString(dblOutputIdealWeight);
this.lblOutputIdeadWeight.setText(strName + "\'" + "s ideal body weight is " + strOutputIdealWeight + " kgs.");
}else if (strSystemOfMeasurement.charAt(0)=='I'){
dblHeight = Double.parseDouble(strHeight);
dblOutputIdealWeight = dblHeight*dblHeight*25/703;
strOutputIdealWeight = Double.toString(dblOutputIdealWeight);
this.lblOutputIdeadWeight.setText(strName + "\'" + "s ideal body weight is " + strOutputIdealWeight + " lbs.");
}else{
this.lblOutputIdeadWeight.setText("Invalid System of Measurement. Please choose (M)etric or (I)mperial.");
}

Answer

Change

strHeight = this.lblInputHeight.getText();

to

strHeight = this.txtInputHeight.getText();

You're telling it to read from the label text rather than the input text. That's why you get the error NumberFormatException. The text "Height:" is throwing off the Double#parseDouble method because it's not a valid number.

Comments