Java 字符串数组的排序
我尝试按升序对字符串数组进行排序,但我不知道如何将排序后的元素存储到另一个字符串数组中 代码如下:Java 字符串数组的排序,java,arrays,Java,Arrays,我尝试按升序对字符串数组进行排序,但我不知道如何将排序后的元素存储到另一个字符串数组中 代码如下: String [] names= {"amazon", "apple", "facebook", "android", "sony"}; String[] sort= new String[names.length]; int i, j; String temp=null; for ( i = 0; i < names.length - 1; i++ ) { for ( j
String [] names= {"amazon", "apple", "facebook", "android", "sony"};
String[] sort= new String[names.length];
int i, j;
String temp=null;
for ( i = 0; i < names.length - 1; i++ ) {
for ( j = i + 1; j < names.length; j++ ) {
if ( names [ i ].compareToIgnoreCase( names [ j ] ) > 0 ) {
// ascending sort
temp = names [ i ];
names [ i ] = names [ j ]; // swapping
names [ j ] = temp;
}
}
sort [i]= names[j];
}
for ( int k = 0; k < names.length; k++ )
System.out.println( sort [ k ] );
}
String[]name={“亚马逊”、“苹果”、“facebook”、“安卓”、“索尼”};
String[]sort=新字符串[names.length];
int i,j;
字符串temp=null;
对于(i=0;i0{
//升序排序
temp=名称[i];
名称[i]=名称[j];//交换
名称[j]=临时;
}
}
排序[i]=名称[j];
}
for(int k=0;k
一个简单的逻辑错误:
sort [i]= names[j];
必须重写为
sort [i]= names[i];
显然,将结果存储到另一个数组是多余的,因为算法会对原始数组进行排序。保持原样:复制并排序副本。这看起来像是家庭作业,所以只有伪代码建议 要求:给定字符串数组,返回已排序的字符串数组,而不更改源字符串数组中信息的顺序 策略:(创建一个进行排序的函数,并调用该函数
String [] sorted = sortMyArray(names);
publicstaticvoidmain(String[]args){
public static void main(String[] args) {
String[] names = { "amazon", "apple", "facebook", "android", "sony" };
String[] sort = new String[names.length];
int i, j;
String temp = null;
for (i = 0; i < names.length - 1; i++) {
//added a negative 1 to names.length
for (j = i + 1; j < names.length - 1; j++) {
if (names[i].compareToIgnoreCase(names[j]) > 0) { // ascending
//swap works fine here // sort
temp = names[i];
names[i] = names[j]; // swapping
names[j] = temp;
}
}
//removed this
//sort[i] = names[j -i];
}
//added this to copy the name array to the sort array ...however this isn't really needed
for(int s = 0; s < names.length; s++){
sort[s] = names[s];
}
for (int k = 0; k < names.length; k++)
System.out.println(sort[k]);
}
String[]name={“亚马逊”、“苹果”、“facebook”、“安卓”、“索尼”};
String[]sort=新字符串[names.length];
int i,j;
字符串temp=null;
对于(i=0;i0{//升序
//交换在这里很好//排序
temp=名称[i];
名称[i]=名称[j];//交换
名称[j]=临时;
}
}
//删除这个
//排序[i]=名称[j-i];
}
//添加此项是为了将名称数组复制到排序数组…但是实际上并不需要这样做
对于(int s=0;s
我在那里更改了你的一些代码……你几乎已经做到了。如果你知道如何在eclipse中使用调试器,那么查找错误应该很简单。请在发布之前花更多的精力格式化你的代码。目前阅读代码非常困难,在点击提交之前,你可以很容易地在预览中看到这一点。接下来,为什么不呢你只需复制数组(例如,使用
clone()
),然后使用数组。排序(copiedArray)
?如果(名称[i].compareTignoreCase(名称[j])<0)
?但是.排序方法呢?有什么特别的理由不使用吗?@fabian:这个问题在什么世界里是这个问题的重复吗?@fabian“如何存储”的陈述是因为看不到错误。因此:没有重复。不幸的是,只有这样的更改,原始数组和新数组都被排序。要求似乎是保持原始数组不变。好吧,在答案中,你更接近了,但还有一个错误你错过了。@Makoto Bah。修复它,不要发表聪明的评论。He did显示代码,所以不要高高在上。
String[] names = {"amazon", "apple", "facebook", "android", "sony"};
System.out.println(java.util.Arrays.toString(names));
String[] sort = new String[names.length];
for (int i = 0; i < names.length - 1; i++) {
for (int j = i + 1; j < names.length; j++) {
if ((names[i].trim().compareToIgnoreCase(names[j].trim())) > 0) {
String temp = names[i];
names[i] = names[j];
names[j] = temp;
}
}
}
System.out.println(java.util.Arrays.toString(names));
Arrays.sort(names);