当我尝试将数组传递给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/