【发布时间】:2014-12-06 18:27:59
【问题描述】:
我有 2 个数组,1 个 1 维数组和另一个 2 维数组,我必须对其进行排序。问题是我不知道如何对它们进行并行排序。我已经按照字母顺序对 1d 数组进行了排序,但我想相应地对 2d 数组进行排序。所以我需要将这两个数组发送到一个排序函数,该函数将返回两个按升序排序的数组,而一维数组“arr1”中的元素将它们对应的元素保留在二维数组“arr2”中。
到目前为止我所拥有的:
import java.io.*;
import java.util.Scanner;
import java.util.Arrays;
public class JAVAhw15 {
public static void main(String args[]) throws IOException {
//required for input
BufferedReader usrInput = new BufferedReader(
new InputStreamReader(System.in));
Scanner user_input = new Scanner( System.in );
int row = 10;
int col = 3;
int size = 10;
//Declare & Initialize
int arr2[][] = new int[row][];
String arr1[] = new String[size];
//construct 2d arr
for(int i=0; i<row; i++)
{
arr2[i] = new int[col];
}
//Filling 1d array arr1
System.out.println("Enter 10 names please: ");
for(int i=0; i<size; i++)
{
arr1[i] = user_input.next();
}
//Filling 2d array arr2
System.out.println("Enter 3 telephone numbers for each name entered");
for(int i=0; i<row; i++)
{
for(int j=0; j<col; j++)
{
System.out.println(arr1[i]+"'s Tel "+j+" is: ");
arr2[i][j] = Integer.parseInt(usrInput.readLine());
}
}
System.out.println("After sort :");
String merged[] = new String[arr1.length];
for (int i=0; i< arr1.length; i++) {
merged[i] = arr1[i]+"=="+arr2[i];
}
Arrays.sort(merged);
for(int i = 0; i < merged.length; i++) {
System.out.println( (i+1) + ". "+
merged[i].split("==")[0] + "\t\t" +
merged[i].split("==")[1]);
}
}
}
【问题讨论】:
-
如果您创建一个包含姓名和三个电话号码的对象并根据姓名对对象进行排序,问题就消失了,您将拥有一个更好的程序。
-
问题将如何消失?我是按照名字按字母顺序排序的。
-
该对象将姓名与电话号码捆绑在一起。当这些对象按名称排序时,电话号码将保留在对象内。
-
啊,所以它就像一个合并?
-
我不会称之为“合并”。它是“面向对象的编程”。