Ich bin neu in Java und ich versuche jetzt, ein Programm zu erstellen, die Wert von Benutzer JTextfield
erhalten und den Wert verwenden, um einige Berechnungen durchzuführen. Ich habe ein Problem festgestellt, dass die JTextfield
NumberFormatException
Fehler haben, wenn ich versuche, es zu kompilieren. Hier ist mein Code:Parsing Double/Int von Jtextfield Eingabe
import javax.swing.*;
import java.lang.*;
public class VehicleParking {
public static void main(String args[]) {
JTextField inh = new JTextField(2);
JTextField inm = new JTextField(2);
JTextField outh = new JTextField(2);
JTextField outm = new JTextField(2);
JPanel InPanel = new JPanel();
InPanel.add(new JLabel("In Hours: "));
InPanel.add(inh);
String inhour = inh.getText();
double inhourInput = Double.valueOf(inhour);
InPanel.add(Box.createHorizontalStrut(15));
InPanel.add(new JLabel("Minutes :"));
InPanel.add(inm);
String inminute = inm.getText();
double inminuteInput = Double.valueOf(inminute);
JPanel OutPanel = new JPanel();
OutPanel.add(new JLabel("Out Hours: "));
OutPanel.add(outh);
String outhour = outh.getText();
double outhourInput = Double.valueOf(outhour);
OutPanel.add(Box.createHorizontalStrut(15));
OutPanel.add(new JLabel("Minutes :"));
OutPanel.add(outm);
String outminute = outm.getText();
double outminuteInput = Double.valueOf(outminute);
Und hier ist das, was ich bekomme, wenn ich versuche, es zu kompilieren:
Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at java.lang.Double.valueOf(Double.java:502)
at VehicleParking.main(VehicleParking.java:23)
Es ist mehr an der Unterseite für die Anzeige und arithmetischen Zweck. Auch habe ich versucht, versuchen und fangen, aber es löst mein Problem überhaupt nicht. (Noch mehr Fehler wurden angezeigt.) Hier sind meine vollständigen Programm nach dem Versuch und fangen zu versuchen, die zu lösen Nummer Format Exception Problem. (ich weiß, es ist irgendwie zu lang für eine solche einfache arithmetische Programm. es tut uns Leid.)
import javax.swing.*;
import java.lang.*;
public class VehicleParking {
public static void main(String args[]) {
JTextField inh = new JTextField(2);
JTextField inm = new JTextField(2);
JTextField outh = new JTextField(2);
JTextField outm = new JTextField(2);
JPanel InPanel = new JPanel();
InPanel.add(new JLabel("In Hours: "));
InPanel.add(inh);
InPanel.add(Box.createHorizontalStrut(15));
InPanel.add(new JLabel("Minutes :"));
InPanel.add(inm);
JPanel OutPanel = new JPanel();
OutPanel.add(new JLabel("Out Hours: "));
OutPanel.add(outh);
OutPanel.add(Box.createHorizontalStrut(15));
OutPanel.add(new JLabel("Minutes :"));
OutPanel.add(outm);
int choice = JOptionPane.showConfirmDialog(null, InPanel, "Vehicle Parking System",JOptionPane.OK_CANCEL_OPTION);
if (choice == JOptionPane.OK_OPTION)
{
try
{String inhour = inh.getText();
double inhourInput = Double.valueOf(inhour);}
catch (NumberFormatException e){
if (inhour == null || inhour.equals(""))
{inhourInput = 0.0;}
else
{inhourInput = 0.0;}}
try
{String inminute = inm.getText();
double inminuteInput = Double.valueOf(inminute);}
catch (NumberFormatException e){
if (inminute == null || inminute.equals(""))
{inminuteInput = 0.0;}
else
{inminuteInput = 0.0;}}
int choice2 = JOptionPane.showConfirmDialog(null, OutPanel, "Vehicle Parking System",JOptionPane.OK_CANCEL_OPTION);
if (choice2 == JOptionPane.OK_OPTION)
{
try
{String outhour = outh.getText();
double outhourInput = Double.valueOf(outhour);}
catch (NumberFormatException e){
if (outhour == null || outhour.equals(""))
{outhourInput = 0.0;}
else
{outhourInput = 0.0;}}
try
{String outminute = outm.getText();
double outminuteInput = Double.valueOf(outminute);}
catch (NumberFormatException e){
if (outminute == null || outminute.equals(""))
{outminuteInput = 0.0;}
else
{outminuteInput = 0.0;}}
double hour = outhourInput - inhourInput;
double minute = outminuteInput - inminuteInput;
String[] VehicleType = {"Car","Van","Bus","Lorry"};
String typeVehicle =(String)JOptionPane.showInputDialog (null, "Choose vehicle type: ","Vehicle Parking System",JOptionPane.PLAIN_MESSAGE,
null,VehicleType,VehicleType[0]);
switch (typeVehicle)
{case "Car" : if (minute <0)
{minute = minute +60;
hour = hour - 1;
double calcalateDuration = hour + (minute/60);
double fee = calcalateDuration;
String show = "Parking fee: "+fee;
JOptionPane.showMessageDialog(null,show,"Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Please take your receipt.","Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
String receipt = "In time: "+inhourInput+" "+inminuteInput+
"\nOut time: "+outhourInput+" "+inminuteInput+
"\nDuration: "+hour+"hours and "+minute+"minutes."+
"\nVehicle Type: "+typeVehicle+
"\nParking fee: "+fee;
JOptionPane.showMessageDialog(null,receipt,"Vehicle Parking System - Parking Receipt",JOptionPane.INFORMATION_MESSAGE);}
else
{double calcalateDuration = hour + (minute/60);
double fee = calcalateDuration;
String show = "Parking fee: "+fee;
JOptionPane.showMessageDialog(null,show,"Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Please take your receipt.","Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
String receipt = "In time: "+inhourInput+" "+inminuteInput+
"\nOut time: "+outhourInput+" "+inminuteInput+
"\nDuration: "+hour+"hours and "+minute+"minutes."+
"\nVehicle Type: "+typeVehicle+
"\nParking fee: "+fee;
JOptionPane.showMessageDialog(null,receipt,"Vehicle Parking System - Parking Receipt",JOptionPane.INFORMATION_MESSAGE);}
break;
case "Van" : if (minute <0)
{minute = minute +60;
hour = hour - 1;
double calcalateDuration = hour + (minute/60);
double fee = calcalateDuration*120/100;
String show = "Parking fee: "+fee;
JOptionPane.showMessageDialog(null,show,"Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Please take your receipt.","Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
String receipt = "In time: "+inhourInput+" "+inminuteInput+
"\nOut time: "+outhourInput+" "+inminuteInput+
"\nDuration: "+hour+"hours and "+minute+"minutes."+
"\nVehicle Type: "+typeVehicle+
"\nParking fee: "+fee;
JOptionPane.showMessageDialog(null,receipt,"Vehicle Parking System - Parking Receipt",JOptionPane.INFORMATION_MESSAGE);}
else
{double calcalateDuration = hour + (minute/60);
double fee = calcalateDuration*120/100;
String show = "Parking fee: "+fee;
JOptionPane.showMessageDialog(null,show,"Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Please take your receipt.","Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
String receipt = "In time: "+inhourInput+" "+inminuteInput+
"\nOut time: "+outhourInput+" "+inminuteInput+
"\nDuration: "+hour+"hours and "+minute+"minutes."+
"\nVehicle Type: "+typeVehicle+
"\nParking fee: "+fee;
JOptionPane.showMessageDialog(null,receipt,"Vehicle Parking System - Parking Receipt",JOptionPane.INFORMATION_MESSAGE);}
break;
case "Bus" : if (minute <0)
{minute = minute +60;
hour = hour - 1;
double calcalateDuration = hour + (minute/60);
double fee = calcalateDuration*140/100;
String show = "Parking fee: "+fee;
JOptionPane.showMessageDialog(null,show,"Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Please take your receipt.","Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
String receipt = "In time: "+inhourInput+" "+inminuteInput+
"\nOut time: "+outhourInput+" "+inminuteInput+
"\nDuration: "+hour+"hours and "+minute+"minutes."+
"\nVehicle Type: "+typeVehicle+
"\nParking fee: "+fee;
JOptionPane.showMessageDialog(null,receipt,"Vehicle Parking System - Parking Receipt",JOptionPane.INFORMATION_MESSAGE);}
else
{double calcalateDuration = hour + (minute/60);
double fee = calcalateDuration*140/100;
String show = "Parking fee: "+fee;
JOptionPane.showMessageDialog(null,show,"Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Please take your receipt.","Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
String receipt = "In time: "+inhourInput+" "+inminuteInput+
"\nOut time: "+outhourInput+" "+inminuteInput+
"\nDuration: "+hour+"hours and "+minute+"minutes."+
"\nVehicle Type: "+typeVehicle+
"\nParking fee: "+fee;
JOptionPane.showMessageDialog(null,receipt,"Vehicle Parking System - Parking Receipt",JOptionPane.INFORMATION_MESSAGE);}
break;
case "Lorry" : if (minute <0)
{minute = minute +60;
hour = hour - 1;
double calcalateDuration = hour + (minute/60);
double fee = calcalateDuration*160/100;
String show = "Parking fee: "+fee;
JOptionPane.showMessageDialog(null,show,"Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Please take your receipt.","Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
String receipt = "In time: "+inhourInput+" "+inminuteInput+
"\nOut time: "+outhourInput+" "+inminuteInput+
"\nDuration: "+hour+"hours and "+minute+"minutes."+
"\nVehicle Type: "+typeVehicle+
"\nParking fee: "+fee;
JOptionPane.showMessageDialog(null,receipt,"Vehicle Parking System - Parking Receipt",JOptionPane.INFORMATION_MESSAGE);}
else
{double calcalateDuration = hour + (minute/60);
double fee = calcalateDuration*160/100;
String show = "Parking fee: "+fee;
JOptionPane.showMessageDialog(null,show,"Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Please take your receipt.","Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
String receipt = "In time: "+inhourInput+" "+inminuteInput+
"\nOut time: "+outhourInput+" "+inminuteInput+
"\nDuration: "+hour+"hours and "+minute+"minutes."+
"\nVehicle Type: "+typeVehicle+
"\nParking fee: "+fee;
JOptionPane.showMessageDialog(null,receipt,"Vehicle Parking System - Parking Receipt",JOptionPane.INFORMATION_MESSAGE);}
break;
default : JOptionPane.showMessageDialog(null,"Unknown Error Occurred!","Vehicle Parking System",JOptionPane.ERROR_MESSAGE);
break;}}
else
JOptionPane.showMessageDialog(null,"Process Canceled.","Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);}
else
JOptionPane.showMessageDialog(null,"Process Canceled.","Vehicle Parking System",JOptionPane.INFORMATION_MESSAGE);
}
}
ich habe hier für einen halben Tag stucked worden, vielleicht nicht lange genug für einige Menschen. Aber ich brauche wirklich Hilfe. Vielen Dank.
Nur klar zu sein; Sie erhalten einen Fehler, wenn Sie _compile_? Unter welcher Zeilennummer? – KevinO
Ich habe den Beitrag mit zusätzlichen Ergebnissen bearbeitet, dass ich den Ausnahmefehler beim Kompilieren erhalten habe, ohne zu versuchen und zu fangen. – LeonSeveron
OK, das untere Beispiel mit dem Try/Catch-Ansatz ist ein besserer ** ** wenn Sie das Problem mit den Variablen beheben. Sie sollten immer versuchen, Nummernausnahme zu fangen. – KevinO