在数组中按字母顺序排序字符串。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
}
}