0

我的任务是通过文本字段输入 20 个数字,然后使用 while 循环输出平均值、中位数和总数。我应该能够自己弄清楚while循环,但我无法让文本字段将数字输入到数组中。请帮忙,这是我到目前为止的代码:

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

public class whileloopq extends Applet implements ActionListener
{
    Label label;
    TextField input;
    int[] numArray = new int[20];
    int num;

    public void init ()
    {
        Label label = new Label("Enter numbers");
        TextField input = new TextField(5);
        add(label);
        add(input);
        input.addActionListener(this);
    }

    public void actionPerformed (ActionEvent ev)
    {
        int num = Integer.parseInt(input.getText());
        int index = 0;
        numArray[index] = num;
        index++;
        input.setText("");

    }

    public void paint (Graphics graf)
    {
        graf.drawString("Array" + numArray, 25, 85);
    }
}

任何帮助将非常感激。

4

3 回答 3

1

(在假设这是家庭作业的情况下编写的答案。)

您知道如何从字符串中解析整数,正如您使用 所展示的那样Integer.parseInt,但是您调用它来将整个 20 个字符解析为一个整数。您需要单独获取每个字符以进行解析。

我建议使用 for 循环和 String#substring 将输入文本子串成几个长度为 1 的字符串。

或者,您可以将输入文本拆分为一个空字符串,然后遍历结果数组(请注意,数组中的第一个字符串将为空),但另一种方法更可能是 Java 新手所期望的,所以你必须在这里使用你的判断。

于 2012-08-12T19:17:48.147 回答
0

actionPerformed()你试图从类文件中读取input.setText("");

但是init()您没有初始化该字段,而是创建并添加到小程序局部变量

TextField input = new TextField(5);

所以类字段是steal null。将其更改为

input = new TextField(5);
于 2012-08-12T19:26:10.103 回答
0
import java.awt.*;
public class frame4array extends Frame
{
Checkbox c1[];
TextField t1[];
int i;
frame4array(String p)
{
super(p);
c1=new Checkbox[2];
t1=new TextField[2];
for(i=0;i<2;i++)
{
t1[0]=new TextField();
t1[0].setBounds(200, 50, 150, 30);
t1[1]=new TextField();
t1[1].setBounds(200, 80, 150, 30);
c1[0]=new Checkbox("Singing");
c1[0].setBackground(Color.red);
c1[0].setBounds(430,200,120,40);
c1[1]=new Checkbox("Cricket",true);
}
for(i=0;i<2;i++)
{
add(t1[i]);
add(c1[i]);
}
setFont(new Font("Arial",Font.ITALIC,40));
}
public static void main(String s[])
{
frame4array f1=new frame4array("hello");
f1.setSize(600,500);
f1.setVisible(true);
}

}
于 2021-05-27T05:57:12.783 回答