私がすべきことは、ユーザーがソフトウェアの名前と在庫数を入力できるようにするプログラムを作成することです。それらを配列に格納し、選択ソートを使用して最小から最大の順にソートする必要があります。
私の問題は、ソフトウェアの名前を番号から分離したくないということです! また、コンパイル時にソートされた名前が表示されません! 選択の並べ替えについて TONS を読みましたが、基本的にはすべてこのように見えます。何が問題なのですか?選択ソートが間違っていましたか?
これは私のコード全体ではありませんが、重要なものを除外しているとは思いません:
// Global variables
static String[] SoftwareArray;
static int[] QuantityArray;
public static void inputInfo() throws IOException
{
BufferedReader userInput = new BufferedReader (new InputStreamReader(System.in));
System.out.print("How many softwares would you like to input? ");
String software = userInput.readLine();
int softwareNum = Integer.parseInt(software);
int[] softArray = new int[softwareNum];
String [] name = new String [softwareNum];
int [] quantity = new int[softwareNum];
// Initialize global variables
SoftwareArray = new String[softwareNum];
QuantityArray = new int[softwareNum];
//loop through number of softwares
for (int i = 0; i < softwareNum; i++)
{
System.out.println("Input name of software: ");
String softwareName = userInput.readLine();
name[i] = softwareName;
System.out.println("Input quantity of software: ");
String quantityString = userInput.readLine();
int softwareQuantity = Integer.parseInt(quantityString);
quantity[i] = softwareQuantity;
// Copy the software name and quantity to the global variables
QuantityArray[i] = quantity[i];
SoftwareArray[i] = name[i];
System.out.println("There are " + quantity[i] + " of the " + name[i] + " software.");
}
}
//method to sort and display info
public static void displayInfo(int[] arr, String[] name)
{
//sort by quantity
for(int i=0; i<arr.length; i++)
{
for(int j=i+1; j<arr.length; j++)
{
if(arr[i] > arr[j] )
{
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
String tempString = name[j];
name[j] = name[i];
name[i] = tempString;
}
}
//output
for(i=0; i < arr.length; i++)
{
System.out.println(arr[i] + " " + name[i]);
}
}
}
//main
public static void main(String[] args) throws IOException {
//input
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
inputInfo();
displayInfo(QuantityArray, SoftwareArray);
}
出力:
How many softwares would you like to input? 2
Input name of software:
Microsoft
Input quantity of software:
1000
There are 1000 of the Microsoft software.
Input name of software:
Linux
Input quantity of software:
2983
There are 2983 of the Linux software.
その後、何もありません。ソートされたリストはまったく表示されません。