gpt4 book ai didi

java - 字符串数组的合并和排序

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:58 27 4
gpt4 key购买 nike

我正在尝试完成作业,但我不知道如何完成。我的代码中有 3 个数组,每个数组都有名字和姓氏(姓氏位于数组中第一个名字之前)。

我应该使用哪个函数来确定一个字符串是否在另一个字符串之前?我在考虑比较,但不太确定如何实现。

这是我到目前为止的代码:

public static void main(String[] args)
{

String[] section1 = {"Curie, Marie", "Feynman, Richard", "Germain, Sophie",
"Turing, Alan"};
String[] section2 = {"Bolt, Usain", "Graf, Steffi","Hamm, Mia"};
String[] section3 = {"Bach, Johann Sebastian", "Beethoven, Ludwig van",
"Mozart, Wolfgang Amadeus", "Schumann, Clara"};

String[] merged = mergeSortedArrays(section1, section2);
String[] merged = mergeSortedArrays(merged, section3);

for(int i = 0; i < merged.length(); i ++)
System.out.print(merged[i]);



}


//Do not change the method header
public static String[] mergeSortedArrays(String[] a1, String[] a2)
{

int i = 0, j = 0, k = 0;
while(a1[i] != null && a2[j] != null)
{
if(a1[i] "comes before" a2[j])
{
merged[k] = a1[i];
i++;
else {
merged[k] = a2[j];
j++;
}
k++;
}
return merged;



}

}

最佳答案

要比较两个字符串,请使用

if(a1[i].compareTo(a2[j]) <= 0)  {   //Means: a1[i] <= a2[j]     
System.out.println("a1[" + i + "] (" + a1[i] + ") is less-than-or-equal-to a2[" + i + "] (" + a2[i] + "));
}

或者

if(a1[i].compareTo(a2[j]) < 0)  {   //Means: a1[i] < a2[j]     
System.out.println("a1[" + i + "] (" + a1[i] + ") is less than a2[" + i + "] (" + a2[i] + "));
}

我推荐像我所做的那样的注释,因为我发现查看 compareTo 函数非常令人困惑。我必须不断提醒自己,该运算符有点像 compareTo 的“就位”。我总是这样评论。

我注意到您的代码存在一些与字符串比较无关的严重问题:

  • 您的 else 前面没有右大括号。
  • 对象 merged 从未在 mergeSortedArrays 函数中声明
  • 您的 while 循环需要检查给定数组的数组索引是否太高,否则您将收到 ArrayIndexOutOfBoundsException
  • anArray.length() 不正确。删除括号。

关于java - 字符串数组的合并和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109369/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com