帮我看看,到底错在哪里呢?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class Gui3
{
static boolean check(int i)
{
int flag=0,j=2;
while(flag==0&&j<=(int)Math.sqrt(i))
{
if(i%j==0)
{
flag=1;
break;
}
else
j++;
}
if(flag==0)
return true;
else
return false;
}
static String [] found()
{
int length=0,i,j;
String[] member=new String[20];
Vector v=new Vector();
Random r=new Random();
for(i=100;i<=200;i++)
{
if(check(i))
v.add(new Integer(i));
}
for(i=0;i<15;i++)
{
j=(int)(20*r.nextDouble());
member[i]=(v.get(j)).toString();
}
return member;
}
public static void main(String[] args)
{
final String[] member=found();
JFrame f=new JFrame("随机素数");
Container c=f.getContentPane();
c.setLayout(new BorderLayout());
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
p3.setLayout(new BorderLayout());
final JTextField t=new JTextField(12);
final JComboBox b=new JComboBox();
JLabel l1=new JLabel("结果:");
final JLabel l2=new JLabel();
JButton b1=new JButton("产生");
final JButton b2=new JButton("查找");
b2.setEnabled(false);
p1.add(b);
p1.add(b1);
p2.add(t);
p2.add(b2);
p3.add(l1,BorderLayout.WEST);
p3.add(l2,BorderLayout.EAST);
c.add(p1,BorderLayout.NORTH);
c.add(p2,BorderLayout.CENTER);
c.add(p3,BorderLayout.SOUTH);
f.pack();
f.show();
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
for(int i=0;i<member.length;i++)
b.addItem(member[i]);
}
});
t.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
b2.setEnabled(true);
}
});
b2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int temp=Integer.parseInt(t.getText());
int flag=0,i;
if(temp>200||temp<100)
flag=2;
else if(!check(temp))
flag=3;
else if((temp<=200&&temp>=100)&&check(temp))
{
/*for(i=0;i<member.length;i++)
{
if(((t.getText()).compareTo(member[i]))==0)
{
flag=1;
member[i]+="*";
}
}*/
}
b.removeAllItems();
for(i=0;i<member.length;i++)
b.addItem(member[i]);
if(flag==1)
l2.setText(temp+"在表中!");
else if(flag==0)
l2.setText(temp+"不在表中!");
else if(flag==2)
l2.setText("请输入一个100与200之间的数!");
else if(flag==3)
l2.setText(temp+"不是素数!");
}
});
}
}
经过我多次尝试,我觉得是我注释的那一段有问题,可是我百思不得其解,帮帮忙好吗?
问题点数:40、回复次数:14Top
1 楼0legend(很久以前)回复于 2002-01-04 13:39:15 得分 0
只看这段,没问题吧Top
2 楼weity(魏广新)回复于 2002-01-04 13:40:09 得分 0
关注Top
3 楼chicky(chicky)回复于 2002-01-05 12:22:28 得分 0
可是我在JPadPro中,连上JDK1.3就会出问题啊,如果在那个循环里面加入break就好了,好像是循环的问题,可是我看来看去也觉得不可能产生死循环啊!各位大哥可以帮我调试一下吗?谢了阿!Top
4 楼chicky(chicky)回复于 2002-01-05 12:30:34 得分 0
怎么刷来唰去还在第四页呢?怎么不回去第一页呢?csdn现在的东东好像没有以前那么好了哦!也不知道是不是我的机器笨啊!Top
5 楼chicky(chicky)回复于 2002-01-05 14:25:51 得分 0
没有人可以帮忙吗?贴下代码运行一下都不可以吗?不要告诉我这里的人都是冷冰冰的哦!不会是分数太低的缘故吧?来到这里是互相帮助,对吗?我真的很着急啊!这是我的连着的第三次发言了,也就是说如果你们不回答得话,我也不能催了,帮帮忙吧!Top
6 楼camry_camry(camry)回复于 2002-01-05 15:11:28 得分 0
得到了什么Exception?Top
7 楼chicky(chicky)回复于 2002-01-06 13:42:49 得分 0
我忘了,你们调试一下不就知道了吗?谢谢了Top
8 楼0legend(很久以前)回复于 2002-01-06 14:00:59 得分 0
我想告诉你,可以用,我试了Top
9 楼chicky(chicky)回复于 2002-01-06 18:42:20 得分 0
那好吧,我在试试,不过我在JB4种也一样的错误啊!Top
10 楼chicky(chicky)回复于 2002-01-06 18:51:23 得分 0
我还是不对啊!异常如下:
Exception occurred during event dispatching:
java.lang.NullPointerException
at java.lang.String.compareTo(String.java:788)
at Gui3$4.actionPerformed(Gui3.java:115)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:216)
at java.awt.Component.processMouseEvent(Component.java:3717)
at java.awt.Component.processEvent(Component.java:3546)
at java.awt.Container.processEvent(Container.java:1164)
at java.awt.Component.dispatchEventImpl(Component.java:2595)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
at java.awt.Container.dispatchEventImpl(Container.java:1200)
at java.awt.Window.dispatchEventImpl(Window.java:912)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)
at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)
注意,那个循环是不注释的,这里只是为了说明我的感觉罢了!谢谢啊!
Top
11 楼0legend(很久以前)回复于 2002-01-06 21:54:08 得分 0
我输入‘123’显示‘157’一个下拉菜单,里面一堆素数,全是100-200间的
我去掉它重新输入就没有变化了Top
12 楼camry_camry(camry)回复于 2002-01-07 12:00:52 得分 20
我的怀疑:
你在combobox中加入了null的item.然后进行了对这种item的操作。
在填写combobox的时候应该赋初值给每个item.Top
13 楼jin2001()回复于 2002-01-07 14:22:58 得分 20
//for(i=0;i<15;i++)
for(i=0;i<20;i++)
{
j=(int)(20*r.nextDouble());
member[i]=(v.get(j)).toString();
}
member数组定义有20个元素,这里只赋值了15个元素,而member.length为20,
组合框中加入了空值
Top
14 楼chicky(chicky)回复于 2002-01-07 20:21:29 得分 0
我的天啊!原来要求就是要20个的,我怎么会写15的呢?真的不知道那个时候自己在做什么,谢了阿,各位!Top




