java小程序错误

java小程序错误,java,button,applet,actionlistener,Java,Button,Applet,Actionlistener,我正在尝试编写一个小程序,它将计算四个输入框的平均数量,或者根据单击的框清除所有字段。我想我基本上是对的,但是某个地方出现了一个错误,导致出现以下错误语句: 线程“AWT-EventQueue-0”java.lang.NumberFormatException中的异常:对于输入字符串:“10”,以下是我到目前为止的结果: import java.applet.*; import java.awt.*; import java.awt.event.*; public class blooddri

我正在尝试编写一个小程序,它将计算四个输入框的平均数量,或者根据单击的框清除所有字段。我想我基本上是对的,但是某个地方出现了一个错误,导致出现以下错误语句: 线程“AWT-EventQueue-0”java.lang.NumberFormatException中的异常:对于输入字符串:“10”,以下是我到目前为止的结果:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class blooddriveaverage extends Applet implements ActionListener 
{
 public void init() 
 {
   Label title = new Label("Blood Drive!");
  setBackground(Color.red);
  Label label1 = new Label("Department 1 amount: ");

  textField1 = new TextField(" ");

  avg = new Button("Average");
  clear = new Button ("Clear Fields");
  avg.addActionListener(this);
  clear.addActionListener(this);

  Label label2 = new Label("Department 2 amount: ");
  textField2 = new TextField(" ");
  Label label3 = new Label("Department 3 amount: ");
  textField3 = new TextField(" ");
  Label label4 = new Label("Department 4 amount: ");
  textField4 = new TextField(" ");

  add(title);
  add(label1);
  add(textField1);
  add(label2);
  add(textField2);
  add(label3);
  add(textField3);
  add(label4);
  add(textField4);
  add(avg);
  add(clear);
  avg.setBackground(Color.white);
  clear.setBackground(Color.orange);

 }
  public void actionPerformed(ActionEvent e) 
  {
   setLayout(new FlowLayout()); 
   double average = 0;
   int[] myarray = new int[3];
   myarray[0] = Integer.parseInt(textField1.getText());
   myarray[1] = Integer.parseInt(textField2.getText());
   myarray[2] = Integer.parseInt(textField3.getText());
   myarray[3] = Integer.parseInt(textField4.getText());

   if (e.getSource() == avg)
   {
  for(int i = 0; i < myarray.length; i++)
   {
    average += myarray[i];
   }
  average /=4;
  Label avgfield = new Label("Average is" + average);

  }

   else
   {
    textField1.setText(" ");
    textField2.setText(" ");
    textField3.setText(" ");  
    textField4.setText(" ");
   }
 }

 TextField textField1, textField2, textField3, textField4;
 Button avg;
 Button clear;
}
import java.applet.*;
导入java.awt.*;
导入java.awt.event.*;
公共类blooddriveaverage扩展小程序实现ActionListener
{
公共void init()
{
标签标题=新标签(“血液驱动!”);
挫折地面(颜色:红色);
标签1=新标签(“部门1金额”);
textField1=新的TextField(“”);
平均值=新按钮(“平均值”);
清除=新按钮(“清除字段”);
avg.addActionListener(本);
clear.addActionListener(这个);
标签2=新标签(“部门2金额”);
textField2=新的TextField(“”);
标签3=新标签(“部门3金额”);
textField3=新的TextField(“”);
Label label4=新标签(“部门4金额”);
textField4=新的TextField(“”);
增加(标题);
添加(标签1);
添加(文本字段1);
添加(标签2);
添加(文本字段2);
添加(标签3);
添加(文本字段3);
添加(标签4);
添加(文本字段4);
加(平均值);
添加(清除);
平均立根地面(颜色为白色);
清晰。背景(颜色为橙色);
}
已执行的公共无效操作(操作事件e)
{
setLayout(新的FlowLayout());
双平均=0;
int[]myarray=新的int[3];
myarray[0]=Integer.parseInt(textField1.getText());
myarray[1]=Integer.parseInt(textField2.getText());
myarray[2]=Integer.parseInt(textField3.getText());
myarray[3]=Integer.parseInt(textField4.getText());
如果(例如getSource()=平均值)
{
for(int i=0;i
读取异常。它被抛出到这一行:

myarray[0] = Integer.parseInt(textField1.getText());
问题是它无法将字符串解析为数字,因为它有空格(例如
10
)。您需要做的是使用trim()删除前导和尾随空格:


这将修复NumberFormatException,但仍存在其他错误。

读取异常。它被抛出到这一行:

myarray[0] = Integer.parseInt(textField1.getText());
问题是它无法将字符串解析为数字,因为它有空格(例如
10
)。您需要做的是使用trim()删除前导和尾随空格:


这将修复NumberFormatException,但仍存在其他错误。

错误消息将准确地告诉您错误所在。您正试图解析
“10”
,而额外的空间具有重要意义

  • 建议一:在解析之前对字符串调用
    trim()
    ,以消除前导和尾随空格
  • 建议二,不要创建文本字段,也不要在文本字段中输入空格,而是输入一个空字符串
e、 例如,改变:

textField2 = new TextField(" ");

致:

这将降低数字字符串中存在空格的风险

  • 建议3:使用Swing GUI库,而不是AWT库
  • 建议4:在未来,考虑创建一个更翔实的问题标题。代码>“java小程序的错误”很少告诉我们您的实际问题,并且可能无法吸引针对该特定问题的专家。更好的问题标题可能是,
    “解析小程序文本字段文本时出现NumberFormatException问题”
    ,或者类似的问题

    • 错误消息会准确地告诉您出了什么问题。您正试图解析
      “10”
      ,而额外的空间具有重要意义

      • 建议一:在解析之前对字符串调用
        trim()
        ,以消除前导和尾随空格
      • 建议二,不要创建文本字段,也不要在文本字段中输入空格,而是输入一个空字符串
      e、 例如,改变:

      textField2 = new TextField(" ");
      

      致:

      这将降低数字字符串中存在空格的风险

      • 建议3:使用Swing GUI库,而不是AWT库
      • 建议4:在未来,考虑创建一个更翔实的问题标题。代码>“java小程序的错误”很少告诉我们您的实际问题,并且可能无法吸引针对该特定问题的专家。更好的问题标题可能是,
        “解析小程序文本字段文本时出现NumberFormatException问题”
        ,或者类似的问题

      好的,我已经完成了这两个步骤,不再出现错误,但是平均值没有打印出来。上面说阿夫菲尔德从未被人读过。我想我必须把这条线与其他标签对齐,但它说变量平均值没有初始化。如果我尝试从actionperformed方法返回average,则表示该方法无法返回值。有什么想法吗?@user2933941:您在哪里将avgField添加到GUI?在类中声明它,并在init方法中将它添加到GUI中。实际上,您正在计算平均值并创建标签。但您从不使用标签:label avgfield=新标签(“Average is”+Average);好的,但是如何从actionPerformed方法到init方法得到变量平均值呢?我无法在actionPeformed方法中使用return语句。您可以做的一件事是向类中添加一个私有成员:JLabel avgfield。将其添加到小程序中。然后在计算平均值之后,将标签设置为:avgfield.setText(average);好的,我已经做了这两个,我不再得到错误,但是平均值没有被打印出来。上面说阿夫菲尔德从未被人读过。我想我得把那条线和其他人排好
      textField2 = new TextField("");
      
      else
      {
        textField1.setText("");
        textField2.setText("");
        textField3.setText("");  
        textField4.setText("");
      }