import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Test extends Applet implements ActionListener //先输入需要排几个数,然后排序,最后查找
{ Label prompt2=new Label("please input how many number");
TextField manytext=new TextField(5);
Button manybutton=new Button("一共有几个数"); Label prompt=new Label("please input number");
TextField input=new TextField(5);
Button sortbtn=new Button("sort");
int []dataarray=new int[10];
int datainputed=0;
int datainputed2=0;
int []comparept=new int[10];
String msg="";
public void init()
{
add(prompt2);
add(manytext);
add(manybutton);
add(prompt);
add(input);
add(sortbtn);
manybutton.addActionListener(this);
input.addActionListener(this);
sortbtn.addActionListener(this);
}
public void actionPerformed(ActionEvent e) //check
{
if(e.getSource()==manybutton)
{
datainputed2=Integer.parseInt(manytext.getText());
int []dataarray=new int[datainputed2];
int []comparept=new int[datainputed2];
Graphics g=new Graphics(); //此外问题,初始化数组
for(int i=0;i<dataarray.length;i++)
g.drawString(Integer.toString(dataarray[i]),10+30*i,40);
for(int i=0;i<comparept.length;i++)
g.drawString(Integer.toString(comparept[i]),10+30*i,70);
g.drawString(msg,10,100);
}
if(e.getSource()==input)
{
dataarray[datainputed++]=Integer.parseInt(input.getText());
if(datainputed<datainputed2)
{
prompt.setText("hava input"+datainputed+"number,please go on");
input.setText("");
}
else
{
prompt.setText("stop!");
input.setVisible(false);
}
}
if(e.getActionCommand()=="sort") //sort
{
sortprocedure();
sortbtn.setLabel("find");
prompt.setText("please number");
input.setVisible(true);
input.setText("");
repaint();
}
if(e.getActionCommand()=="find") //find
{
int k=bisearch(Integer.parseInt(input.getText()));
if(k==-1)
msg="nothing";
else
msg="the number is"+k;
repaint();
}
} void sortprocedure() //sub sort
{
int pass,i,temp;
for(pass=1;pass<dataarray.length;pass++)
{
temp=dataarray[pass];
for(i=pass-1;i>=0;i--)
{
if(dataarray[i]<=temp)
break;
else
dataarray[i+1]=dataarray[i];
}
dataarray[i+1]=temp;
}
}
int bisearch(int key) // sub find
{
int low=0;
int high=dataarray.length-1;
int mid;
int i=0;
while(low<=high)
{
mid=(high+low)/2;
comparept[i++]=dataarray[mid];
if(dataarray[mid]==key)
return mid;
else if(dataarray[mid]<key)
low=mid+1;
else
high=mid-1;
}
return -1;
}
}
import java.awt.*;
import java.awt.event.*;
public class Test extends Applet implements ActionListener //先输入需要排几个数,然后排序,最后查找
{ Label prompt2=new Label("please input how many number");
TextField manytext=new TextField(5);
Button manybutton=new Button("一共有几个数"); Label prompt=new Label("please input number");
TextField input=new TextField(5);
Button sortbtn=new Button("sort");
int []dataarray=new int[10];
int datainputed=0;
int datainputed2=0;
int []comparept=new int[10];
String msg="";
public void init()
{
add(prompt2);
add(manytext);
add(manybutton);
add(prompt);
add(input);
add(sortbtn);
manybutton.addActionListener(this);
input.addActionListener(this);
sortbtn.addActionListener(this);
}
public void actionPerformed(ActionEvent e) //check
{
if(e.getSource()==manybutton)
{
datainputed2=Integer.parseInt(manytext.getText());
int []dataarray=new int[datainputed2];
int []comparept=new int[datainputed2];
Graphics g=new Graphics(); //此外问题,初始化数组
for(int i=0;i<dataarray.length;i++)
g.drawString(Integer.toString(dataarray[i]),10+30*i,40);
for(int i=0;i<comparept.length;i++)
g.drawString(Integer.toString(comparept[i]),10+30*i,70);
g.drawString(msg,10,100);
}
if(e.getSource()==input)
{
dataarray[datainputed++]=Integer.parseInt(input.getText());
if(datainputed<datainputed2)
{
prompt.setText("hava input"+datainputed+"number,please go on");
input.setText("");
}
else
{
prompt.setText("stop!");
input.setVisible(false);
}
}
if(e.getActionCommand()=="sort") //sort
{
sortprocedure();
sortbtn.setLabel("find");
prompt.setText("please number");
input.setVisible(true);
input.setText("");
repaint();
}
if(e.getActionCommand()=="find") //find
{
int k=bisearch(Integer.parseInt(input.getText()));
if(k==-1)
msg="nothing";
else
msg="the number is"+k;
repaint();
}
} void sortprocedure() //sub sort
{
int pass,i,temp;
for(pass=1;pass<dataarray.length;pass++)
{
temp=dataarray[pass];
for(i=pass-1;i>=0;i--)
{
if(dataarray[i]<=temp)
break;
else
dataarray[i+1]=dataarray[i];
}
dataarray[i+1]=temp;
}
}
int bisearch(int key) // sub find
{
int low=0;
int high=dataarray.length-1;
int mid;
int i=0;
while(low<=high)
{
mid=(high+low)/2;
comparept[i++]=dataarray[mid];
if(dataarray[mid]==key)
return mid;
else if(dataarray[mid]<key)
low=mid+1;
else
high=mid-1;
}
return -1;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货