gpt4 book ai didi

java - 使用Comparator对ArrayList进行排序时未打印出值

转载 作者:行者123 更新时间:2023-12-01 10:21:54 25 4
gpt4 key购买 nike

我正在开发一个程序,将值(String 和 int)输入到数组中,将这些值放入一个对象中,该对象进入数组列表中,并按 int 值进行排序。当我运行该程序时,它打印出: 排序列表条目: 商品名称:空---数量:0 商品名称:空---数量:0 商品名称:空---数量:0//等等..我想在这里自学,但我不知道该怎么做。

我的主要类(class):

import java.io.*;
import java.util.*;

public class InputItem
{
public static void main(String args[])
{
String again;
String names[] = new String[100];
int quant[] = new int[100];
int row=0;
do{
System.out.println("Please input assignment name:");
Scanner newName = new Scanner(System.in);
String name = newNamet.next();
names[row] =name;

System.out.println("Please input assignment quant:");
Scanner quantI = new Scanner(System.in);
int quantity = quantI.nextInt();
quant[row] = quantity;

System.out.println("Would you like to add another item? Enter 'Yes' or 'No'");
Scanner input = new Scanner(System.in);
again = input.next();
row++;
}
while(again.equalsIgnoreCase("Yes"));
List<Items> work = new ArrayList<Items>();
for(int count = 0; count<row; count++)
{
work.add(new Items((names[row]),(quant[row])));
}
Collections.sort(work, new MyComp());
System.out.println("Sorted List Entries: ");
for(Items e:work)
{
System.out.println(e);
}
}
}

带有比较器的类:

import java.util.*;
class MyComp implements Comparator<Items>
{
@Override
public int compare(Items e1, Items e2)
{
if((e1).getQuant()< (e2).getQuant())
{
return 1;
}
else
{
return -1;
}

}
}
public class Items
{
private String name;
private int quant;
public Items(String n, int q)
{
this.name = n;
this.quant = q;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getQuant()
{
return quant;
}
public void setQuant(int quant)
{
this.quant = quant;
}
public String toString()
{
return "Item Name:" + this.name+"---Quant:" +this.quant;
}
}

最佳答案

问题出在这里...

for (int count = 0; count < row; count++) {
work.add(new Items((names[row]), (quant[row])));
}

您正在使用 row,它是在上一节代码中定义的,用于跟踪您正在更新的元素,但现在指向数组中的下一个元素(或一个空的元素)元素)。这基本上意味着您不断向 Items

添加相同的(空)值

相反,您应该使用count

for (int count = 0; count < row; count++) {
work.add(new Items((names[count]), (quant[count])));
}

关于java - 使用Comparator对ArrayList进行排序时未打印出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542572/

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