Java 如何在数组列表中按降序查找多个最大值的索引?
用户通过扫描程序输入在单独的类中提供两个数组列表的值,即客户名称和销售额。 用户还提供topN,这是他们希望看到的顶级客户的数量。 如果他们想要的顶级客户数大于数组列表中的客户数,那么我们应该打印所有客户,从销售排名靠前的客户到排名靠后的客户 我这里的问题是在资源类中,方法nameOfBestCustomers(int-topN)试图获取最大值的索引,但它按顺序打印数组列表的索引。我想读取所有值,按顺序查找max和所有较低的值,并获取这些值的索引,然后使用它打印数组列表字符串名称。示例:用户输入值:销售2代表客户“a”,销售3代表客户“b”,销售4代表客户“c”。用户将topN的值设置为4,因此应根据销售值按此顺序打印所有顶级客户:c、b、A 你知道怎么做吗?提前谢谢 资源类Java 如何在数组列表中按降序查找多个最大值的索引?,java,arrays,arraylist,max,Java,Arrays,Arraylist,Max,用户通过扫描程序输入在单独的类中提供两个数组列表的值,即客户名称和销售额。 用户还提供topN,这是他们希望看到的顶级客户的数量。 如果他们想要的顶级客户数大于数组列表中的客户数,那么我们应该打印所有客户,从销售排名靠前的客户到排名靠后的客户 我这里的问题是在资源类中,方法nameOfBestCustomers(int-topN)试图获取最大值的索引,但它按顺序打印数组列表的索引。我想读取所有值,按顺序查找max和所有较低的值,并获取这些值的索引,然后使用它打印数组列表字符串名称。示例:用户输入
import java.util.*;
public class P7_13
{
String name;
double price;
private ArrayList<String> list;
private ArrayList<Double> list2;
public P7_13()
{
list = new ArrayList<String>(); //creates new arraylist objects
list2 = new ArrayList<Double>();
}
public void addSale(String customerName, double amount)
{
name = customerName;
price = amount;
list.add(customerName); //adds names and prices to arraylists
list2.add(amount);
}
public ArrayList<String> nameOfBestCustomers(int topN) //print topN customers method
{
double index = 0;
int finalIndex = 0;
double max = 0;
if(topN > list.size())
{
for (int i = list.size(); i >= 0; i--) {
if(list2.get(i) >= max) {
max = list2.get(i);
index = list2.indexOf(max);
System.out.println(max);
int index2 = (int)index;
//print all customers
System.out.print("Top Customers: ");
System.out.println(list.get(index2));
}
}
}
return list;
}
您可以尝试使用此数据结构来存储金额和CustomerName列表,然后按金额排序(配对键)
import java.util.*;
public class P7_13Tester
{
public static void main (String args[])
{
Scanner input = new Scanner(System.in);
P7_13 Customer = new P7_13(); //new object of P7_12 class
String customer = "";
boolean isPriceZero = false;
while (!isPriceZero) {
System.out.println("Please enter a sale and customer!"); //prompts user for customer name
System.out.print("Sale: ");
double amount = input.nextDouble();
if(amount == 0) { //ends if sentinel value is entered
isPriceZero = true;
System.out.println("\nEnd of sales and persons!");
System.out.println(Customer.nameOfBestCustomers(4)); //prints best customers, providing topN
break;
}
System.out.print("Customer: "); //prompts user for customer name
customer = input.next();
Customer.addSale(customer,amount); //adds values and names to P7_12 object
}
input.close(); //closes scanner
}
}