数组排序多维数组赛第二阵列 [英] array sort multidimensional array to match second array
本文介绍了数组排序多维数组赛第二阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有学生姓名的单一demenational阵列,并与学生标记的二维数组,我的名字排序不错,但我不能让标记匹配(因为他们必须留在相同的顺序)。这是我尝试code:
静态的String [] = studentNamesArray新的String [10];
静态INT [] [] studentMarksArray =新INT [10] [3]; 静态无效sortAlphabetical(){
串tempName;
INT intSwap;
布尔标志= FALSE;
而(标志== FALSE){
标志=真实的;
的for(int i = 0; I< 9;我++){
如果(studentNamesArray [I] .compareTo(studentNamesArray第[i + 1])大于0){
tempName = studentNamesArray [I]
studentNamesArray [I] = studentNamesArray第[i + 1];
studentNamesArray [I + 1] = tempName; 为(中间体Y = 0; Y 2; Y ++){
intSwap = studentMarksArray [I] [0];
studentMarksArray [I] [Y] = studentMarksArray [I + 1] [Y + 1];
studentMarksArray [I + 1] [Y + 1] = intSwap;
}
标志= FALSE;
}
}
}
}
解决方案
您只需要像你这样的名称来交换标记数组:
静态无效sortAlphabetical(){
串tempName;
INT [] intSwap; //< - 注意我改变了这个作为一个int []数组
布尔标志= FALSE;
而(标志== FALSE){
标志=真实的;
的for(int i = 0; I< studentNamesArray.length-1;我++){//< - 注意我改变了这种长度 - 1,避免IndexOutOfBoundsException异常
如果(studentNamesArray [I] .compareTo(studentNamesArray第[i + 1])大于0){
tempName = studentNamesArray [I]
studentNamesArray [I] = studentNamesArray第[i + 1];
studentNamesArray [I + 1] = tempName; intSwap = studentMarksArray [I]
studentMarksArray [I] = studentMarksArray第[i + 1];
studentMarksArray [I + 1] = intSwap;
标志= FALSE;
}
}
}
}
静态的String [] = studentNamesArray新的String [3];
静态INT [] [] studentMarksArray =新INT [3] [3]; 公共静态无效的主要(字串[] args)抛出java.lang.Exception的{
studentNamesArray [0] =标记;
studentNamesArray [1] =安娜;
studentNamesArray [2] =阿诺德; studentMarksArray [0] = INT新[] {1,2,3};
studentMarksArray [1] =新INT [] {4,5,6};
studentMarksArray [2] = INT新[] {0,0,0}; sortAlphabetical();
的System.out.println(Arrays.toString(studentNamesArray));
的System.out.println(Arrays.deepToString(studentMarksArray)); }
输出:
[安娜,阿诺德,马克]
[[4,5,6],[0,0,0],[1,2,3]]
I have a single demenational array with student names and a 2D array with student marks, I can sort the names fine but I cannot get the marks to match (as they have to stay in the same order). Here is my attempted code:
static String[] studentNamesArray = new String[10];
static int[][] studentMarksArray = new int[10][3];
static void sortAlphabetical() {
String tempName;
int intSwap;
boolean flag = false;
while (flag==false) {
flag = true;
for (int i = 0; i < 9; i++) {
if (studentNamesArray[i].compareTo(studentNamesArray[i + 1])>0) {
tempName = studentNamesArray[i];
studentNamesArray[i] = studentNamesArray[i + 1];
studentNamesArray[i + 1] = tempName;
for(int y=0;y<2;y++){
intSwap = studentMarksArray[i][0];
studentMarksArray[i][y] = studentMarksArray[i+1][y+1];
studentMarksArray[i+1][y+1] = intSwap;
}
flag = false;
}
}
}
}
解决方案
You just have to swap the marks arrays like you did for the names :
static void sortAlphabetical() {
String tempName;
int [] intSwap; //<-- note I changed this as an int[] array
boolean flag = false;
while (flag==false) {
flag = true;
for (int i = 0; i < studentNamesArray.length-1; i++) { //<-- note I changed this to length - 1 to avoid IndexOutOfBoundsException
if (studentNamesArray[i].compareTo(studentNamesArray[i + 1])>0) {
tempName = studentNamesArray[i];
studentNamesArray[i] = studentNamesArray[i + 1];
studentNamesArray[i + 1] = tempName;
intSwap = studentMarksArray[i];
studentMarksArray[i] = studentMarksArray[i+1];
studentMarksArray[i+1]= intSwap;
flag = false;
}
}
}
}
static String[] studentNamesArray = new String[3];
static int[][] studentMarksArray = new int[3][3];
public static void main (String[] args) throws java.lang.Exception {
studentNamesArray[0] = "Mark";
studentNamesArray[1] = "Anna";
studentNamesArray[2] = "Arnold";
studentMarksArray[0] = new int[]{1,2,3};
studentMarksArray[1] = new int[]{4,5,6};
studentMarksArray[2] = new int[]{0,0,0};
sortAlphabetical();
System.out.println(Arrays.toString(studentNamesArray));
System.out.println(Arrays.deepToString(studentMarksArray));
}
Output :
[Anna, Arnold, Mark]
[[4, 5, 6], [0, 0, 0], [1, 2, 3]]
这篇关于数组排序多维数组赛第二阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文