Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串数组的排序_Java_Arrays - Fatal编程技术网

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);