gpt4 book ai didi

java - 使用比较器对数组进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 01:45:10 25 4
gpt4 key购买 nike

我有以下代码。当我尝试编译它时,出现以下错误:

The method sort(List<T>, Comparator<? super T>) in the type Collections is not 
applicable for the arguments (Software[], new Comparator(){})
The type new Comparator(){} must implement the inherited abstract method
Comparator.compare(Object, Object)

代码

import java.text.DecimalFormat; // For proper currency  
import java.util.Comparator;
import java.util.Collections;


public class Software

{
// Declare variables

String SoftwareTitle; // SoftwareTitle
int SoftwareStock; // Software totals
double SoftwarePrice; // Software Price
int SoftwareNum; // Software Product ID
double CalculateInventory; // To add inventory
double SoftwareValue; // Software Total value
double value; // Complete inventory total

Software( String softtitle, int softstock, double softprice, int softitemnum )

{
// Create object constructor

SoftwareTitle = softtitle;
SoftwareStock = softstock;
SoftwarePrice = softprice;
SoftwareNum = softitemnum;

}

// Set Software Title

public void setSoftwareTitle( String softtitle )
{
SoftwareTitle = softtitle;
}


// Return Software Title

public String getSoftwareTitle()
{
return SoftwareTitle;
}

// Set software inventory
public void setSoftwareStock( int softstock)
{
SoftwareStock = softstock;
}

// Return software inventory
public int getSoftwareStock()
{
return SoftwareStock;
}

// Set software price

public void setSoftwarePrice( double softprice )
{
SoftwarePrice = softprice;
}

// Return software price
public double getSoftwarePrice()
{
return SoftwarePrice;

}

// Set item number

public void setSoftwareNum( int softitemnum )
{
SoftwareNum = softitemnum;
} //

//return software item number

public int getSoftwareNum()
{
return SoftwareNum;
} //


// calculate inventory value

public double Softwarevalue()
{
return SoftwarePrice * SoftwareStock;

}

public void setCalculateInventory (double value){
this.CalculateInventory = value;
}



public double getCalculateInventory(){
double value = 0;
for(int i = 0; i < 3; i++){
value = Softwarevalue();
}
return value;
}


}//end method value

//

import java.text.DecimalFormat; // For proper currency
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;


public class Inventory {

public static void main( String args[] )

{

// Start array of software titles

Software[] aSoftware = new Software[4];

aSoftware[0]= new Software("Command and Conquer ", 6, 29.99, 10122);
aSoftware[1]= new Software("Alice in Wonderland", 1, 10.99,10233);
aSoftware[2]= new Software("Doom", 1, 10.99, 10344);
aSoftware[3]= new Software("Walking Dead", 6, 9.99, 10455);

//Set currency format
DecimalFormat money = new DecimalFormat("$0.00");

// Sort in order of Software Name

Collections.sort(aSoftware, new Comparator() {
public int compare(Software s1, Software s2) {
return s1.getSoftwareTitle().compareTo(s2.getSoftwareTitle());

}
});



// Display software title, number of units, cost, item number and total inventory

for (int i = 0; i < aSoftware.length; i++){

System.out.println("Software Title is "+ aSoftware[i].getSoftwareTitle() );

System.out.println("The number of units in stock is "+ aSoftware[i].getSoftwareStock() );

System.out.println("The price of the Software Title is "+ (money.format(aSoftware[i].getSoftwarePrice() )));

System.out.println( "The item number is "+ aSoftware[i].getSoftwareNum());

System.out.println( "The value of the Software Inventory is "+ (money.format(aSoftware[i].Softwarevalue() )));

System.out.println();
}

//output total inventory value

double total = 0.0;
for (int i = 0; i < 3; i++){
total += aSoftware[i].getCalculateInventory();
}
System.out.printf("Total Value of Software Inventory is: \t$%.2f\n", total);


//end output total inventory value








}
}

//

//end

如何使用比较器让软件标题(数组)按字母顺序显示?

最佳答案

你有两个问题:

1) 你正在使用 Collections.sort (需要一个 List<E> ),但试图对数组进行排序。使用 Arrays.sort 相反。

2) 您需要指定您正在实现 Comparator<Software> ,不仅仅是原始的 Comparator类型。

所以基本上,这是可行的:

Arrays.sort(aSoftware, new Comparator<Software>() {
public int compare(Software s1, Software s2) {
return s1.getSoftwareTitle().compareTo(s2.getSoftwareTitle());
}
});

关于java - 使用比较器对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201573/

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