/*
 * 我也是新手,写一个练练
 */import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class T1 extends Applet {

private Label labelTip;
private Button sortStart;
private TextField text;

private String resultText;

public void init() {

add(labelTip = new Label("Input a string:"));
add(text = new TextField(30));
add(sortStart = new Button("SORT"));

sortStart.addActionListener(
new ActionListener() 
{
public void actionPerformed(ActionEvent e)
{
System.out.println("Start To Sort...");

char[] arrayChar = text.getText().toCharArray();
char bubble;
for(int i = 0; i < arrayChar.length; i++)
{
for(int j = i; j < arrayChar.length; j++)
{
if(arrayChar[i] > arrayChar[j])
{
bubble = arrayChar[i];
arrayChar[i] = arrayChar[j];
arrayChar[j] = bubble;
}
}
}
resultText = new String(arrayChar);
System.out.println("The Result is: " + resultText);

repaint();
System.out.println("End Sort...");
}
}
);
}

public void paint(Graphics g) {
g.drawString(resultText,10,50);
}}

解决方案 »

  1.   

    faint!贴出去后格式就不对了,真是抱歉,因为格式话用的是TAB,这个TAB页面好象没处理。
    另外,关于用compareTo比较是什么意思?还有,用PAINT显示好象不太准确吧。还有一个问题,sortStart.addActionListener(new ActionListener() {})用的是匿名类,应该可以理解吧。
      

  2.   

    我觉得将那个字符串转成字符数组后用sort直接排序然后输出就好了阿!
      

  3.   

    谢谢aladdina(Aladdina),但你的排序算法好象有些不对,另,要求是用字符串数组,但我不知用String还是StringBuffer数组,我不知道它的读写方法,我随便写了一下,但我觉的有些不对,不知道是哪。拿出来献丑,大家探讨一下。
    //字典序输出字符串
    package strsort;import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;public class strApplet extends Applet implements ActionListener{  Button  btn;
      Label prompt;
      TextField input;
      String[] StrArr=new String[10];
      int count;  /**Initialize the applet*/
      public void init() {
        add(btn);
        add(input);
        add(prompt);
        input.addActionListener(this);
      }  public void paint(Graphics g){
       for(int i=0;i<StrArr.length;i++){
       g.drawString(StrArr[i],10,40+15*i);
       }
      }
      public void actionPerformed(ActionEvent e){
        if (e.getSource()==input){
          StrArr[count++]=input.getText();
          if(count<10){
            prompt.setText("Input"+count+"strings");
            input.setText("");
            }
        else{
          prompt.setText("输入完毕!");
          input.setVisible(false);
          }
          }
        if (e.getSource()==btn){
          StrArrSort();
          repaint();
          }
      }
      void StrArrSort(){
      int flag,i,j;
      String StrTemp;
      for(i=0;i<StrArr.length;i++){
        flag=0;
        for(j=0;j<StrArr.length-i-1;j++){
          if (StrArr[j].compareTo(StrArr[j+1])>0)
            flag=1;
            StrTemp=StrArr[j];
            StrArr[j]=StrArr[j+1];
            StrArr[j+1]=StrTemp;
            }
         }
      if (flag==0 )
        return;
      }
      }
    }
      

  4.   

    关于排序排序算法嘛,原理一样怎么写都行,我一看你的算法怎么好象是从清华的《数据结构》上来的,呵呵,其中有个设置 flag的优化问题我当时是第一次见到,印象深刻
      

  5.   

    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;public class strApplet extends Applet implements ActionListener
    {
        Button  btn;
        Label prompt;
        TextField input;
        String[] StrArr=new String[10];
        int count;
        
        /**Initialize the applet*/
        public void init() {
            add(btn = new Button("Sort"));            // 这里没有生成对象,会产生异常
            add(input = new TextField(30));            // 这里没有生成对象,会产生异常
            add(prompt = new Label("input 1 strings"));// 这里没有生成对象,会产生异常
            input.addActionListener(this);
            btn.addActionListener(this);            // 这里没有为SORT按钮添加响应
        }
        
        public void paint(Graphics g)
        {
            for(int i=0;i<StrArr.length;i++){
                if(StrArr[i] != null)            // 第一次没有初始化的时候会发生异常
                    g.drawString(StrArr[i],10,40+15*i);
            }
        }
        public void actionPerformed(ActionEvent e){
            if (e.getSource()==input){
                StrArr[count++] = input.getText();
                if(count<10){
                    prompt.setText("Input "+count+" strings");
                    input.setText("");
                }
                else{
                    prompt.setText("输入完毕!");
                    input.setVisible(false);
                }
            }
            else if (e.getSource()==btn){ // 这里最好加上 ELSE
                StrArrSort();
                repaint();
            }
        }
        void StrArrSort()
        {
            int flag = 0,i,j;
            String StrTemp;
            for(i=0;i<StrArr.length;i++){
                flag=0;
                for(j=0;j<StrArr.length-i-1;j++){
                    if (StrArr[j].compareTo(StrArr[j+1])>0)
                    {    // 你的程序中这里没有“{”,实际上只有一条语句执行
                        flag=1;
                        StrTemp=StrArr[j];
                        StrArr[j]=StrArr[j+1];
                        StrArr[j+1]=StrTemp;
                    }
                }
                // flag标志判断应该在这里,否则无法发生作用!
                if (flag==0 )return;
            }
            // flag标志判断 老的位置
        }
    }
    // 这里曾经多了一个 “}”
      

  6.   

    无论如何也要谢谢aladdina(Aladdina),说来惭愧,我是计算机系即将毕业的学生,回顾三年多的大学生活,我有许多的感慨。我最好的老师不是在学校,而是在CSDN上我认识了许多的朋友,你也是一个。留下你的email好吗?我的是[email protected].
      

  7.   

    惭愧,我是刚毕业的!
    [email protected],这个速度最快:)