JAVA培训
位置:首页Java开发Java SE
 问题状态
 
一个J2SE简单的问题~
 悬赏分:100  已经过期   过期时间2007-7-2 22:53
功能要求:
编写一个简易数组查找程序,
要求用户可以输入一个数组的数据,
要求可以在下拉框中选择查找方法,
然后用户就可以看到查找时候编历的数据,把查找结果反馈给用户,
要求实现数据结构中常用的查找算法 
提问者:84514@qq.com  - 头衔:开发爱好者   
    
    
 回复答案 共11条
  这个问题难度不是很大。
按照他的要求,大体思路是要有输入数据,存入数组,然后排序。
其中选择的下拉菜单,既然是 J2SE ,首选 SWING了,所以同样输入数据也应该是用 文本框或者 文本区域 来输入。
所以是这样:
 Swing 界面 来设计一个数组排序的程序。包括输入数据,选择算法,输出数据。
    回答者:wudianheng@vip.qq.com  - 头衔:开发爱好者 2008-10-10 1:28:00  

  题目意思我都没看 明白
    回答者:415899747@qq.com  - 头衔:开发爱好者 2008-9-30 13:52:54  

  是用SWING组件做吧,界面好做,方法实现有点难度自己做了个没实现功能,愿问其祥!
    回答者:zhangpeng8593@163.com  - 头衔:开发爱好者 2008-9-25 21:38:05  

  课程设计是吧,以前我也做过。
    回答者:guijinjiao@163.com  - 头衔:开发爱好者 2008-9-12 15:53:11  

  /*
 *(两个数以一个空格作为间隔,且保证输入的是数值,最多排10个数,多于10个的取前10个排);
 *
 *步骤:文本段输入->回车->下拉框选择排序方法->点击"排序"按钮;
 *
 *快速排序与沟排序等还没代码!!!!!快速排序我今天刚看才;
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class SortDemo extends JFrame implements ActionListener{
//组件成员;
private JLabel inputLabel=new JLabel("输入:  ");
private JTextField inputTf=new JTextField(5); 
 
private JLabel selectSorterLabel=new JLabel("排序方法:  ");
private String []sorters={"冒泡排序","选择排序","快速排序","沟排序",};
private JComboBox sorterList=new JComboBox(sorters);
 
private JButton startBtn=new JButton("排序");
 
private JLabel sortForeLabel=new JLabel("排序前:  ");
private JLabel sfl1=new JLabel();
private JLabel sortAfterLabel=new JLabel("排序后:  ");
private JLabel sfl2=new JLabel();
String outputStr="";
String taText="";
 
private JTextArea ta=new JTextArea(20,20);//描述排序过程;
Float []datas=null;
int pArray=0;//数组指针;
 
//构造;
public SortDemo(){
  
 super("排序算法演示");
 JPanel p=new JPanel(new GridLayout(5,2));
 p.add(inputLabel);
 inputTf.addActionListener(this);
 p.add(inputTf);
  
 p.add(selectSorterLabel);
 p.add(sorterList);
  
 p.add(sortForeLabel);
 p.add(sfl1);
  
 p.add(sortAfterLabel);  
 p.add(sfl2);
  
 startBtn.addActionListener(this);
 p.add(startBtn);
  
 add(p,BorderLayout.NORTH);
 ta.setEditable(false);
 JScrollPane sp=new JScrollPane(ta);
 add(sp);
  
 setVisible(true);
 setSize(600,500);
 setResizable(false);
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
 
//ActionEvent事件;
public void actionPerformed(ActionEvent ae){
 if(ae.getSource()==inputTf){
  String inputStr=inputTf.getText().trim();//假定输入无误;
  inputStr+=" ";//为输入的字串加一空格,以便于操作;
   
  if(inputStr.equals(" ")){
   return;
  }
   
  int strLen=inputStr.length();
  datas=new Float[10];//存数,最多为10个数排序;
  pArray=0;//每次清0;
  for(int i=0,j=0;i<strLen&&pArray<10;i++){
//i用于扫描字串inputStr中的字符,j用于记录每个数的首位置;
 //当输入数的个数多于10个时,取前10个排序;
   char ch=inputStr.charAt(i);
   if(ch==' '){//空格作为相邻两数的间隔;
    String subStr=inputStr.substring(j,i);     
           Float flo=Float.parseFloat(subStr);
    datas[pArray++]=flo;
    j=i+1;//j指向下个数的开头;
     
   }
    
  }
   
  inputStr="";
  for(int i=0;i<pArray;i++){
      inputStr+=Float.toString(datas[i])+" ";
  }
  sfl1.setText(inputStr);//显示欲排序的数;   
   
 }//
  
 if(ae.getSource()==startBtn){
  int sortNo=sorterList.getSelectedIndex();//算法编号;
  if(datas==null){
            return;
  }
         sort(datas,sortNo);
 }
  
}
 
//sort排序方法;
public void sort(Float [] _datas,int _sortNo){
  
 switch(_sortNo){
  case 0:
  //冒泡;每次从前i个数中选最大的靠后放;
  /*不加change可读性会好些*/
        taText="";
        int iii=1;
         boolean change=true;
                            //初始化时认为是需要排序的;
        for(int i=pArray-1;i>=1&&change;i--){
                              //数组中数的个数为pArray,
             change=false;
                                    //每次先假定不需在交换;
            for(int j=0;j<i;j++){
               if(datas[j]>datas[j+1]){
                                          //交换;
                   change=true;
                   Float temp=datas[j];
                   datas[j]=datas[j+1];
                   datas[j+1]=temp;
               }
                 
            }
//如果进行一次内for后change仍为false,说明已经有序,确实不用在交换了,不用再排了,则退出外for;
            taText+="第"+iii+"步: ";
            for(int ii=0;ii<pArray;ii++){
               if(ii==pArray-iii){
                  taText+="*"
                                               +Float.toString(datas[ii])+"|";
                 continue;
               }
                taText+=Float.toString(datas[ii])+"|";
             }
             taText+="\n";
             iii++;
         }
         ta.setText(taText+"\n冒泡就是每次选个最大的向后放!");
         
         outputStr="";
         for(int i=0;i<pArray;i++){
            outputStr+=Float.toString(datas[i])+" ";
         }
         sfl2.setText(outputStr);//显示排序后的数;
         break;
   case 1:
   //选择;每次选出一个最小的靠前放;
         taText="";
         int jjj=1;
         for(int i=0,j=0;i<pArray-1;i++){
            j=i;//用j记录下第i位置,让该位置上的数与其后的所有数比,
找出最小的那个与之交换;
            for(int k=i+1;k<pArray;k++){
               if(datas[k]<datas[j]){
                  j=k;
               }
            }
//内for之后j就指向了i位置之后的且比i位置上的数最小的数的位置;
            if(j!=i){//如果确有这么个位置,则交换;
               Float temp=datas[i];
               datas[i]=datas[j];
               datas[j]=temp;
            }
            taText+="第"+jjj+"步: ";
            for(int ii=0;ii<pArray;ii++){
               if(ii==jjj-1){
              taText+="*"+Float.toString(datas[ii])+"|";
              continue;
               }
               taText+=Float.toString(datas[ii])+"|";
             }
             taText+="\n";
             jjj++;
         }
         ta.setText(taText+"\n选择就是每次选个最小的向前放!");
         
         outputStr="";
         for(int i=0;i<pArray;i++){
            outputStr+=Float.toString(datas[i])+" ";
         }
        sfl2.setText(outputStr);//显示排序后的数;
        break;
         
  case 2:
  //快速排序;
  case 3:
  //沟排序;
   
   
 }
}
 
 
//main;
public static void main(String[]args){
 new SortDemo();
}
 
 
}
    回答者:person123321123@163.com  - 头衔:开发爱好者 2007-12-21 22:31:11  

  问题不够清晰,是要找某个数组呢?还是只是找某个数据啊?
    回答者:fangling618@163.com  - 头衔:初级程序员 2007-11-14 17:08:46  

  能不能把要求写具体点:比如界面的要求,要用哪几种查找的方法(算法)等
    回答者:dhappy05@126.com  - 头衔:开发爱好者 2007-10-21 22:11:05  

  问题倒是不困难,只是有点罗嗦,所以就困难了。
我以前做过一个类似的。
    回答者:wx123456wx@126.com  - 头衔:开发爱好者 2007-10-4 17:00:00  

  我有一个数组排序的。要的话可以发给你。
    回答者:liuwei40301@163.com  - 头衔:初级程序员 2007-8-14 17:50:34  

  java 对数组支持的不是太好,我写个四维数组都难...
    回答者:yxxcrtd@gmail.com  - 头衔:初级程序员 2007-8-6 14:20:34  

  我想请问,是不是只能用j2se来写界面啊
还是说可以用到jsp的界面来选择你的查找方法
    回答者:smcjt823@yahoo.com.cn  - 头衔:开发爱好者 2007-7-8 23:16:38  

我的回答:
回答即可得10分,被采纳则可得50分+悬赏分。
  验证码

 
 
最新问题
欢迎使用本系统,智囊团。踊跃回答,赢得积分。

使用有问题请到 帮助
 
关于我们 | 商务合作 | 招聘信息 | 客服中心 | 服务条款 | 免责声明 | 网站导航 |java培训QQ留言
Copyright 2007 zhinangtuan.net.cn all rights reserved 版权所有