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]);
} }}
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]);
} }}
mouth[i] = (++i) + "";
c2.add(mouth[i]);
}
问题在 mouth[i] = (++i) + "";
i已经加1了,之后for循环又加1了。
使得字符串数组中有没有被赋值的地方,所以出错。
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赋值的下标值超过声明时的长度
你首先得把发生错误的现象说错来,是编译错误,还是exception,还是run time error,这是作为一个提问者的先决条件.
还有,不是每个人都有闲工夫把你那一段代码一行一行读完的,请记住,想上来问问题方便自己,那么首先得方便他人,理清三个条件:1、你想做什么
2、主要部分代码
3、出错现象OK?