나는 값 (String 및 int)을 배열에 입력하고 그 값을 int 값으로 정렬하기 위해 배열 목록에 들어가는 객체에 넣는 프로그램에서 작업 중입니다. 그래도 프로그램을 실행하면 다음과 같이 출력됩니다. 정렬 된 목록 항목 : 항목 이름 : null --- Quant : 0 항목 이름 : null --- Quant : 0 항목 이름 : null --- Quant : 0 // etc .. 여기서 혼자 배우려고하는데 어떻게해야할지 모르겠어요.
내 메인 클래스 :
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])));
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다