Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“线程中的异常”;AWT-EventQueue-0“;java.lang.NumberFormatException:空字符串_Java_Swing_Parsing_Variables_Floating Point - Fatal编程技术网

“线程中的异常”;AWT-EventQueue-0“;java.lang.NumberFormatException:空字符串

“线程中的异常”;AWT-EventQueue-0“;java.lang.NumberFormatException:空字符串,java,swing,parsing,variables,floating-point,Java,Swing,Parsing,Variables,Floating Point,我在运行这个程序时遇到了问题,它编译的程序运行不正常。当我运行它并尝试执行计算时,它会抛出一堆错误。我认为它必须与变量类型相关。节目如下: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class area extends JFrame implements ActionListener, ItemListener{ //row 1 JPanel row1 = new JPanel();

我在运行这个程序时遇到了问题,它编译的程序运行不正常。当我运行它并尝试执行计算时,它会抛出一堆错误。我认为它必须与变量类型相关。节目如下:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class area extends JFrame implements ActionListener, ItemListener{

 //row 1
  JPanel row1 = new JPanel();
  JLabel select = new JLabel("Please select what you would like to caculate the area and volume of.");
 //row 2
  JPanel row2 = new JPanel();
  JCheckBox circle = new JCheckBox("Circle", false);
  JCheckBox cube = new JCheckBox("Cube", false);
 //row 3 
  JPanel row3 = new JPanel();
  JLabel radlab = new JLabel("Radius of the circle (in cm)");
  JTextField rad = new JTextField(3);
  JLabel sidelab = new JLabel("A side of the cube (in cm)");
  JTextField side = new JTextField(3); 
//row4
  JPanel row4 = new JPanel(); 
  JButton solve = new JButton("Solve!");
//row 5
  JPanel row5 = new JPanel();
  JLabel areacallab = new JLabel("Area");
  JTextField areacal = new JTextField(10);
  JLabel volumelab = new JLabel("Volume");
  JTextField volume = new JTextField(10);
public area(){
  setTitle("Area Caculator");
    setSize(500,400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
//disables all text areas 
  rad.setEnabled(false);
  side.setEnabled(false);
  areacal.setEnabled(false);
  volume.setEnabled(false);
//add listeners
  circle.addItemListener(this);
  cube.addItemListener(this);
  solve.addActionListener(this);
FlowLayout one = new FlowLayout(FlowLayout.CENTER);
   setLayout(one);

  row1.add(select);
   add(row1);


  row2.add(circle);
  row2.add(cube);
   add(row2);

  row3.add(radlab);
  row3.add(rad);
  row3.add(sidelab);
  row3.add(side);
   add(row3);

  row4.add(solve);
   add(row4);

  row5.add(areacallab);
  row5.add(areacal);
  row5.add(volumelab);
  row5.add(volume);
   add(row5);

}
public void circlepick(){
  //cube.setCurrent(false);
  cube.setEnabled(false);
  rad.setEnabled(true); 
}
public void cubepick(){
  circle.setEnabled(false);
  side.setEnabled(true);
}
@Override
public void itemStateChanged(ItemEvent event) {
  Object item = event.getItem();
    if (item == circle){
      circlepick();
    }
    else if (item == cube){
      cubepick();
    }
  }
@Override
public void actionPerformed(ActionEvent evt){
  //String radi = rad.getText();
  //String sid = side.getText(); 

   //circlesolve();
   //cubesolve();
String radi = rad.getText();
String sid = side.getText(); 
double radius = Double.parseDouble(radi);
double length = Double.parseDouble(sid);

  double cirarea = Math.PI * Math.pow(radius, 2);
  double cirvolume =  (4.0 / 3) * Math.PI * Math.pow(radius, 3);
  double cubearea = Math.pow(length, 2);
  double cubevolume = Math.pow(length, 3);
  areacal.setText("" + cirarea + cubearea + "");
  volume.setText("" + cirvolume + cubevolume + "");
}
public static void main(String[] args) {
    area are = new area(); 

}
}
以下是尝试执行数学运算时打印出的错误(抱歉,它太长了)

线程“AWT-EventQueue-0”java.lang.NumberFormatException中的异常:空字符串
在sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1038)中
在java.lang.Double.parseDouble(Double.java:548)
在area.actionPerformed(area.java:112)


非常感谢您的帮助

调用函数时:

double radius = Double.parseDouble(radi);
double length = Double.parseDouble(sid);
radi
sid
是空的
String
,就是这样

java.lang.NumberFormatException: empty String
告诉你。
在解析之前,可以考虑添加<代码>系统.out .PrtLn(RAID+)、“+SID”< /代码>,以检查哪些值是空字符串,并确保字符串不是空的。p>
Double.parseDouble(字符串s)
当给定的
字符串s
无法解析为
Double
值时,抛出
NumberFormatException