import java.applet.*;
import java.awt.*;
import java.awt.event.*;public class Messes extends Applet {
Label l1 = new Label("姓名:");
Label l2 = new Label("性别:");
Label l3 = new Label("生日:");
         TextField tf1 = new TextField(4);
CheckboxGroup cg = new CheckboxGroup();
Checkbox ck1 = new Checkbox("男", cg, false);
Checkbox ck2 = new Checkbox("女", cg, false);
Choice c1 = new Choice();
Choice c2 = new Choice();
Choice c3 = new Choice();
String year[] = new String[100];
String mouth[] = new String[12];
String day[] = new String[31]; public void init() {
int count = 0;
setBackground(Color.pink);
add(l1);
add(tf1);
add(l2);
add(ck1);
add(ck2);
add(l3);
add(c1);
add(c2);
add(c3);
for (int i = 0; i < year.length; i++) {
year[i] = 1980 + i + "";
c1.add(year[i]);
} for (int i = 0; i < mouth.length; i++) {
mouth[i] = (++i) + "";
c2.add(mouth[i]);
} for (int i = 0; i < day.length; i++) {
day[i] = (++i) + "";
c3.add(day[i]);
} }}

解决方案 »

  1.   

    for (int i = 0; i < mouth.length; i++) {
    mouth[i] = (++i) + "";
    c2.add(mouth[i]);
    }
    问题在 mouth[i] = (++i) + "";
    i已经加1了,之后for循环又加1了。
    使得字符串数组中有没有被赋值的地方,所以出错。
      

  2.   


    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;public class Messes extends Applet
    {
    Label l1 = new Label("姓名:");
    Label l2 = new Label("性别:");
    Label l3 = new Label("生日:");
    TextField tf1 = new TextField(4);
    CheckboxGroup cg = new CheckboxGroup();
    Checkbox ck1 = new Checkbox("男", cg, false);
    Checkbox ck2 = new Checkbox("女", cg, false);
    Choice c1 = new Choice();
    Choice c2 = new Choice();
    Choice c3 = new Choice();
    String year[] = new String[100];
    String mouth[] = new String[12];
    String day[] = new String[31]; public void init()
    {
    int count = 0;
    setBackground(Color.pink);
    add(l1);
    add(tf1);
    add(l2);
    add(ck1);
    add(ck2);
    add(l3);
    add(c1);
    add(c2);
    add(c3);
    for (int i = 0; i < year.length; i++)
    {
    year[i] = 1980 + i + "";
    c1.add(year[i]);
    }
    for (int i = 0; i < mouth.length; i++)
    {
    mouth[i] = (i+1) + "";
    c2.add(mouth[i]);
    }
    for (int i = 0; i < day.length; i++)
    {
    day[i] = (i+1) + "";
    c3.add(day[i]);
    }
    }
    }++i 在for循环中的直接后果:
    数组mouth和day赋值的下标值超过声明时的长度
      

  3.   


    你首先得把发生错误的现象说错来,是编译错误,还是exception,还是run time error,这是作为一个提问者的先决条件.
       
      还有,不是每个人都有闲工夫把你那一段代码一行一行读完的,请记住,想上来问问题方便自己,那么首先得方便他人,理清三个条件:1、你想做什么
    2、主要部分代码
    3、出错现象OK?