在数组中按字母顺序排序字符串。JAVA

在数组中按字母顺序排序字符串。JAVA,java,arrays,sorting,Java,Arrays,Sorting,我必须为学校项目排序数组中的字符串。我们的老师不允许我们使用数组、排序。 我必须使用两种排序方法,但它们工作得不太好 第一个返回每个值的两倍。约翰,杰克,亚当,汤姆将返回亚当,亚当,杰克,杰克,约翰,约翰,汤姆,汤姆 public static void sort() { inputFileNames();//inputs list of names from a file. for (int i = 0; i < size - 1; i++) {

我必须为学校项目排序数组中的字符串。我们的老师不允许我们使用数组、排序。 我必须使用两种排序方法,但它们工作得不太好

第一个返回每个值的两倍。约翰,杰克,亚当,汤姆将返回亚当,亚当,杰克,杰克,约翰,约翰,汤姆,汤姆

public static void sort() {
        inputFileNames();//inputs list of names from a file.
        for (int i = 0; i < size - 1; i++) {
            for (int j = i + 1; j < size; j++) {
                if (stArr[i].compareTo(stArr[j])>0) {
                    temp = stArr[i];
                    stArr[i] = stArr[j];
                    stArr[j] = temp;
                }
            }
        }
        display("The names are: ");// method to display array 
        System.out.println("");
    }
第二个排序没有运行:

public static void bubbleSort() {
        inputFileNames();
        for (int i = size - 1; i >= 0; i--) {
            for (int j = 0; j <= i; j++) {
                if (stArr[j].compareTo(stArr[j+1])>0) {
                    temp = stArr[j];
                    stArr[j] = stArr[j + 1];
                    stArr[j + 1] = temp;
                }
            }
        }
        display("The names are: ");
        System.out.println("");
    }
输入和显示:

static void display(String heading) {
    System.out.println(heading + "\n");
    for (int i = 0; i < size; i++) {
        System.out.println(stArr[i]);
    }
}

static void inputFileNames() {
    try {
        Scanner scFile = new Scanner(new File("Names.txt"));
        while (scFile.hasNext()) {
            stArr[size] = scFile.nextLine();
            size++;
        }
    } catch (FileNotFoundException ex) {
        System.out.println("File not found.");
    }
}
这是第一个代码的答案。我不擅长文件处理,所以你必须使用你的输入法。我知道扫描仪,这就是我在这里使用的原因


在你的第二个例子中,你的j循环是错误的,它应该是j=0;我们能看看你的显示器吗?复制错误很可能就在那里。Java中的数组是固定长度的,因此,即使您的算法有缺陷,数组中的条目数也不可能是以前的两倍。InputFileName也可能读取两次名称,以便将它们排序在一起。或者,是的。因此,也请发布这些内容,或者在调试器中排序/查看之前输出数组的内容。感谢您的回答,但我们的老师不允许我们使用array.sort
 /* package codechef; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{   Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int i,j;
    String[] stArr = new String[n];
    for(i=0;i<n;i++)
    {
        stArr[i]=sc.next();
       // System.out.println(stArr[i]);
    }
    //inputs list of names from a file.
    for (i = 0; i < n  ; i++) {
        for (j = i+1 ; j < n; j++) {
            if (stArr[i].compareTo(stArr[j])>0)
            {
               String temp = stArr[i];
                stArr[i] = stArr[j];
                stArr[j] = temp;
               // System.out.println(stArr[i]);
            //    System.out.println(stArr[j]);
            }
        }
    }

    for(i=0;i<n;i++)
    {
        System.out.println(stArr[i]);
    }


    // your code goes here
}
}