上次看了个关于排序(按abcdef顺序排序)的帖子,里面有个回帖的写了如下代码:public class Test{
public static void main(String args[]){
String s="SDsBAEa";
Test test=new Test();
s=test.sort(s);
System.out.println(s);
}
public String sort(String param){
char c[]=param.toCharArray();
char min;
String s1;
String s2;
for(int i=0;i<c.length;i++){
min=c[i];
s1=min+"";
for(int j=i+1;j<c.length;j++){
s2=c[j]+"";
if(s1.compareToIgnoreCase(s2)>0 || (s1.compareToIgnoreCase(s2)==0 && s1.compareTo(s2)>0)){
min=c[j];
c[j]=c[i];
c[i]=min;
s1=min+"";
}
}
}
return new String(c);
}
}我看不懂怎么循环来判断顺序...麻烦给看看,详细的说明下哈,分立即奉上!!!!
public static void main(String args[]){
String s="SDsBAEa";
Test test=new Test();
s=test.sort(s);
System.out.println(s);
}
public String sort(String param){
char c[]=param.toCharArray();
char min;
String s1;
String s2;
for(int i=0;i<c.length;i++){
min=c[i];
s1=min+"";
for(int j=i+1;j<c.length;j++){
s2=c[j]+"";
if(s1.compareToIgnoreCase(s2)>0 || (s1.compareToIgnoreCase(s2)==0 && s1.compareTo(s2)>0)){
min=c[j];
c[j]=c[i];
c[i]=min;
s1=min+"";
}
}
}
return new String(c);
}
}我看不懂怎么循环来判断顺序...麻烦给看看,详细的说明下哈,分立即奉上!!!!
min=c[i];
s1=min+"";
//每次把第 i 个和 i+1 后面的都比较一次并把最终结果放在 i的位置上 for(int j=i+1;j<c.length;j++){
s2=c[j]+"";
//不区分大小写的 ascii 码比较。 if(s1.compareToIgnoreCase(s2)>0 || (s1.compareToIgnoreCase(s2)==0 && s1.compareTo(s2)>0)){
min=c[j];
c[j]=c[i];
c[i]=min;
s1=min+"";
}
}
}
package zhao;
public class Test{
public static void main(String args[]){
String s="SDsBAEa";
Test test=new Test();
s=test.sort(s);
System.out.println(s);
}
public String sort(String param){
char c[]=param.toCharArray();
char min;
String s1;
String s2;
for(int i=0;i<c.length;i++){
min=c[i];//取出第i个字符
s1=min+"";//转化为String类型
//跟index比i大的index所在的元素跟c[i]比较,要循环
for(int j=i+1;j<c.length;j++){
s2=c[j]+"";//取出index比i大的元素的值,并且把他转为String类型
// 或者s1和s2是完全不同的字符,可以是大小写不同,或者同一个字符,但大小写不一样的时候,执行if块的代码
if(s1.compareToIgnoreCase(s2)>0 || (s1.compareToIgnoreCase(s2)==0 && s1.compareTo(s2)>0)){
min=c[j];//把[j]元素和[i]元素互换!下面3行代码就是
c[j]=c[i];
c[i]=min;
s1=min+"";
}
}
}
return new String(c);
}
}
for(int j=i+1;j<c.length;j++){
s2=c[j]+"";
if(s1.compareToIgnoreCase(s2)>0 || (s1.compareToIgnoreCase(s2)==0 && s1.compareTo(s2)>0)){
min=c[j];
c[j]=c[i];
c[i]=min;
s1=min+"";
}
能不能将具体点呢..
这程序就多加了个if条件。
if的条件里按 ||(或) 分两半看.
http://myweb.yzu.edu.cn/toby88/c/cstudy/chengxu/Dxuanmai.htm
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;public class csdntest { /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
List list = new ArrayList();
list.add("a");list.add("b");
list.add("d");list.add("e");
list.add("c");list.add("f");
Collections.sort(list,new Comparatorsort());
if(list != null && list.size() > 0){
Iterator it = list.iterator();
while(it.hasNext()){
String str = (String)it.next();
System.out.print(str + " ");
}
}
}}
class Comparatorsort implements Comparator{
public int compare(Object o1,Object o2)
{
String str1=(String)o1;
String str2=(String)o2;
if(str1.compareTo(str2)>0)
return 1;
if(str1.compareTo(str2)<0)
return -1;
return 0;
}
}