public void actionPerformed(ActionEvent e)
{
int count=0;
max=Integer.parseInt(in1.getText());
min=Integer.parseInt(in2.getText());
for(int i=min;i<=max;i++)
if(SuShu(i)==1)
{
s=s+(char)i;//这个地方应该为s=s+String.valueOf(i);
repaint();
}
}
{
int count=0;
max=Integer.parseInt(in1.getText());
min=Integer.parseInt(in2.getText());
for(int i=min;i<=max;i++)
if(SuShu(i)==1)
{
s=s+(char)i;//这个地方应该为s=s+String.valueOf(i);
repaint();
}
}
此句的;去掉
import java.awt.*;
import java.awt.event.*;public class lll extends Applet implements ActionListener
{
String s=new String();
Label lab,result;
TextField in1,in2;
Button btn;
int max=0,min=0;
public void init()
{
lab=new Label("请输入上限和下限:");
in1=new TextField(5);
in2=new TextField(5);
result=new Label(" ");
btn=new Button("查找");
add(in1);
add(in2);
add(result);
add(btn);
add(lab);
btn.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
int count=0;
min=Integer.parseInt(in1.getText());
max=Integer.parseInt(in2.getText());
for(int i=min;i<max;i++)
if(SuShu(i)==1)
{
s=s+","+String.valueOf(i);
repaint();
};
}
public int SuShu(int n)
{
int m;
for(m=2;m<Math.sqrt(n);m++){
if(n%m==0)
break;
};
if(Math.sqrt(n)<m)
return 1;
else
return 0;
}
public void paint(Graphics g)
{
g.drawString(s,10,50);
}
}
首先,你的程序中小错误比较多,你自己对照着改一下
譬如:min,max的位置颠倒,多分号,等
最重要的是,判别素数的算法有误,再看一下书吧
s=s+(char)i;//这个地方应该为s=s+String.valueOf(i);
这与我对这些类的方法非常不了解有关,书上也是没有介绍,不过我现在知道了。另外,判别素数的算法没有错误,来自潭浩强的《C语言设计教程》,在改正过的程序中也仍用这个算法。不过slientlamb(沉默的羔羊)的程序也是完全正确的。现在我仍需要向各位讨教,关于小Java程序中图形界面的设置问题。
比如说在g.drawString(s,10,50)中有这些参数设置,那么在标签、文本框中是否也有类似的参数设置来调整他们的大小、位置就象可视化编程中的那些界面属性,因为,那个字符串的显示的位置实在不好。希望大家还可以这样耐心的帮助我!!!谢谢!!!!
。
。
{
int a=20;(全局变量,调整输出的位置。)
。
。
。
。
。
。
public void actionPerformed(ActionEvent e)
{
int count=0;
min=Integer.parseInt(in1.getText());
max=Integer.parseInt(in2.getText());
for(int i=min;i<=max;i++)
if(SuShu(i)==1)
{
s=s+String.valueOf(i)+" ";
count=count+1;
repaint();
if(count%10==0)
{ a=a+20;s=" ";} //我本来希望每输出10个可以换一次行,但不知该怎么用。
}
}
。
。
。
。
。
。
public void paint(Graphics g)
{
g.drawString(s,60,a);
}
}
急切求解!!!!!!!
此外你的算法也不是最优的。
对程序做了个修改,不知对你是否有用
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class sushuApplet extends Applet implements ActionListener
{
String s="";
Label lab;
TextField in1,in2;
TextArea result;
Button btn;
int max=0,min=0;
public void init()
{
lab=new Label("ÇëÊäÈëÉÏÏÞºÍÏÂÏÞ:");
in1=new TextField(5);
in2=new TextField(5);
btn=new Button("²éÕÒ");
add(lab);
add(in1);
add(in2);
add(btn);
result=new TextArea(5, 40);
add(result);
btn.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
int count=0;
max=Integer.parseInt(in1.getText());
min=Integer.parseInt(in2.getText());
s="";
for(int i=min;i<=max;i++){
if(bsushu(i))
{
s=s+String.valueOf(i);
count++;
if(count%10==0){
s=s+"\n";
result.append(s);
s="";
count=0;
}
else s=s+" ";
}
}
if (s!="") result.append(s);
}
public boolean bsushu(int n)
{
int m;
if(n<=3) return true;
for(m=2;m<=Math.sqrt(n);m++)
if((n%m)==0) return false;
return true;
}
}
不过我想,我大概知道错误之处了,用g.drawString输出时用循环来实现多行的分行输出,循环变量就是那个a,控制输出的位置!
大概就是这样,谢了各位,我还需多多努力!!