java - 如何修复我的 sortData 和 CompareTo 方法。我不断收到 "cannot be converted to error."

标签 java

当我尝试将数组传递给compareTo 方法时,我不断收到错误:不兼容的类型:BingoPlayer 无法转换为BingoPlayer[]。我不太确定如何解决这个问题。

我正在从文本文件中读取数据。以下是该文件的内容:

  • 50.00
  • 10
  • 詹姆斯·史密斯,50.0
  • 迈克尔·史密斯,50.0
  • 罗伯特·史密斯,50.0
  • 玛丽亚·加西亚,50.0
  • 大卫·史密斯,50.0
  • 玛丽亚·罗德里格斯,50.0
  • 玛丽·史密斯,50.0
  • 玛丽亚·埃尔南德斯,50.0
  • 玛丽亚·马丁内斯,50.0
  • 詹姆斯·克拉珀,50.0

导入java.io。; 导入java.util.;

public static void sortData()
{
    int n = test.length;
    int m =0;
    BingoPlayer temp;  
     for(int i=0; i < n; i++)
     {  
        for(int j=1; j < (n-i); j++)
        {  
            m = compareTo((test[j], test[j+1];
           if(m > 0)
           {  
             temp = test[j-1];  
             test[j-1] = test[j];  
             test[j] = temp;  
           }  

        }  
     }  

}
public static int compareTo(BingoPlayer[] player1, BingoPlayer[] player2)
{
    for(int i =0; i < 10; i++)
    {
            if(player1[i].firstName.compareTo(player2[i].firstName) != 0)
                return player1[i].firstName.compareTo((player2[i].firstName));
            else if (player1[i].lastName.compareTo(player2[i].lastName) != 0)
                return player1[i].lastName.compareTo((player2[i].lastName));
            else 
                return player1[i].lastName.compareTo(player2[i].lastName);
    }

}

}

最佳答案

由于您没有提供所有代码,我将假设“test”是 BingoPlayer 对象的数组。

我建议您更改compareTo 方法,仅将1 个BingoPlayer 与另一个BingoPlayer 进行比较。通过代码的工作方式,您可以比较测试中的所有内容,然后调用一个方法来再次比较测试中的所有内容。让我们减少冗余并尝试使其工作:

public static void sortData()
{
    int n = test.length;
    int m =0;
    BingoPlayer temp;  
     for(int i=0; i < n; i++)
     {  
        for(int j=1; j < (n-i); j++)
        {  
            m = compareTo((test[j], test[j+1];
           if(m > 0)
           {  
             temp = test[j-1];  
             test[j-1] = test[j];  
             test[j] = temp;  
           }  

        }  
     }  

}
public static int compareTo(BingoPlayer player1, BingoPlayer player2)
{

            if(player1.firstName.compareTo(player2.firstName) != 0)
                return player1.firstName.compareTo((player2.firstName));
            else if (player1.lastName.compareTo(player2.lastName) != 0)
                return player1.lastName.compareTo((player2.lastName));
            else 
                return player1.lastName.compareTo(player2.lastName);

}

}

我再次假设“test”是 BingoPlayer 对象的数组。如果是这种情况,那么您正在尝试将两个单独的 BingoPlayer 对象发送到需要两个 BingoPlayer 数组的方法。对上面显示的compareTo进行更改应该可以修复您的程序。

关于java - 如何修复我的 sortData 和 CompareTo 方法。我不断收到 "cannot be converted to error.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55535840/

相关文章:

java - 在方法中设置值数组

java - 非唯一列上的 HIbernate onetoMany 映射

java - 如何将公共(public) EC 代码点和曲线名称转换为 PublicKey?

java - 如果收到广播,是否会调用应用程序类 OnCreate

java - Primefaces 异常 INFO : java. lang.ArithmeticException :/by zero java. lang.ArithmeticException:/by zero

java - GWT : how to compile multiple module result into single nocache. js 文件

java - 使用 Java 和 Oauth2 对 Google Drive 进行身份验证

java - 数学二十四游戏 Java

java - 加载动画在前 ICS 设备上启动,但不会在后 ICS 设备上启动

java - 如何在一个类中定义按钮并在不同类中定义监听器?