我正在尝试按降序和升序对输入到数组中的排序字符串数据进行冒泡。
以下是目前的代码:
import java.util.*;
public class nextLineArray
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String names[]=new String[12];
System.out.println("Enter the 12 names: ");
//Load Array
for(int i = 0; i < 12; i++)
{
names[i] = input.nextLine();
}
//Print initial list
System.out.println("List of names via input:"+ names);
//Print descending order list
String descSort;
descSort=bubbleSortDesc(names);
System.out.println("Names listed sorted in descending order (via BubbleSort): "+descSort);
}
public static String bubbleSortDesc(String[] names)
{
String temp;
int passNum, i, result;
for(passNum=1; passNum <= 11; passNum++)
{
for(i = 0; i<=(11-passNum); i++)
{
result=names[i].compareToIgnoreCase(names[i+1]);
if(result>0)
{
temp=names[i];
names[i]=names[i+1];
names[i+1]=temp;
}
}
}
return names;
}
}
当我尝试将已排序的数组返回到main方法时,它在返回行上给出了以下错误:
Incompatible Types
我们的在线讲师刚刚开始使用多种方法和阵列,这让我们非常困惑......如果我的任何错误显而易见,请原谅我。
编辑:由于Alexandre Santos在评论中已修复了初始问题,我在输入数据后执行程序时遇到问题,而不是打印出打印出来的数组中的字符串
[Ljava.lang.String;@6d782f7c
答案 0 :(得分:1)
看一下方法
public static String bubbleSortDesc(String[] names)
该方法的返回应该是一个String(只有一个),但是您将返回参数“names”,这是一个字符串数组。 String后面的“[]”将其标识为数组。
我不会为你做功课,所以提示:检查方法bubbleSortDesc的返回类型是否应该是一个String或一个字符串数组。
祝你好运。答案 1 :(得分:0)
public static String bubbleSortDesc(String [] names)
应该是
public static String [] bubbleSortDesc(String [] names)
并将descSort声明为String数组。
此外,您只是打印数组对象。这不会为您打印列表。你已遍历数组。
在您的代码中包含此内容:
for (String name:names)
{
System.out.println(name);
}
也为descSort做同样的事情....
答案 2 :(得分:0)
有2点需要解决。首先,您应该返回String数组
public static String[] bubbleSortDesc(String[] names)
因此你应该这样定义:
String descSort[];
答案 3 :(得分:0)
您可以通过将打印命令更改为以下内容来修复它:
System.out.println("Names listed sorted in descending order (via BubbleSort): "+ java.util.Arrays.deepToString(descSort));
如果你想要细节,那么descSort就是一个String []。在Java中,当您将String []转换为String时,它会为您提供疯狂的字符串表示。您必须将数组中的每个条目单独转换为String。幸运的是,deepToString方法将为您做到这一点。