Я попытался отсортировать массив строк, используя пользовательский ввод столбца, который они хотят редактировать. Однако отсортированный массив не может быть отображен. Я не знаю, как изменить или где изменить. Здесь массив String состоит из имени, фамилии и среднего имени. Таким образом, логика сравнивает соседний столбец, а первый происходит позже в алфавитном порядке, происходит обмен. Если два массива имеют одинаковую строку, то сравните следующую строку и тот же столбец, и снова происходит обмен. (это только для 1-го и 2-го столбца)
А также я хочу изменить массив в соответствии с вводом пользователем столбца, который он хочет отсортировать. Я правильно использую класс сканера?
Вот мой код:
import java.util.Scanner;
public class Multi_dimensional_array {
public static void main(String[] args) {
// TODO Auto-generated method stub
String students[][]= {{"Prachaya" , "Johnson" , "M"}, {"Hafsa" , "Pillips", "R" }, { "Junnosuke", "Andews", "D"}, {"Aithima" , "Peters", "H"}, {"Jenwiji", "Davis","J" }};
int arrlen = students.length;
System.out.println("original array is:" );
System.out.println();
for(int count1 = 0; count1 < arrlen; count1++)
{
for(int count2 = 0; count2 < arrlen -2; count2++)
{
System.out.print(students[count1][count2] + " \t" );
}
System.out.println();
}
String temp = "";
//This is sorted array according to user's input
int x = 0; int y = 0;
int column;
Scanner sc =new Scanner (System.in);
//Ask user's imput of column he/she wants to edit
System.out.println();
System.out.println("Please Enter the number of column you want to edit: ");
column = sc.nextInt();
if ( column == 1)
{
if( x < arrlen - 1)
{
for (x = 0; x < arrlen; x++)
{
//swap array[0][0] and array [1][0] / [1][0] and [2][0] / [2][0] and [3][0] / [3][0] and [4][0] / [4][0] and [5][0]
if (students[x][y].compareTo(students[x + 1][y])> 0)
{
temp = students[x][y] ;
students[x][y] = students[x + 1][y];
students[x + 1][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + 1][y + 1];
students[x + 1][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + 1][y + 2];
students[x + 1][y + 2] = temp;
}
x = 0; y = 0;
//compare the top array with bottom strings
for (int j = x + 2; j< arrlen; j++)
{
if (students[x][y].compareTo(students[x + 2][y])> 0 )
{
temp = students[x][y] ;
students[x][y] = students[x + j][y];
students[x + j][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + j][y + 1];
students[x + j][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + j][y + 2];
students[x + j][y + 2] = temp;
}
}
}
}
else
{
if( x < arrlen - 1)
{
for (x = 0; x < arrlen; x++)
{
if (students[x][y].compareTo(students[x + 1][y]) == 0)
{
if (students[x][y + 1].compareTo(students[x + 1][y + 1])> 0)
{
temp = students[x][y] ;
students[x][y] = students[x + 1][y];
students[x + 1][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + 1][y + 1];
students[x + 1][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + 1][y + 2];
students[x + 1][y + 2] = temp;
}
x = 0; y = 0;
for (int j = x + 2; j< arrlen; j++)
{
if (students[x][y].compareTo(students[x + 2][y])> 0 )
{
temp = students[x][y] ;
students[x][y] = students[x + j][y];
students[x + j][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + j][y + 1];
students[x + j][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + j][y + 2];
students[x + j][y + 2] = temp;
}
}
}
}
}
}
}
if ( column == 2)
y = 1;
{
if( x < arrlen - 1)
{
for (x = 0; x < arrlen; x++)
{
//swap array[0][0] and array [1][0] / [1][0] and [2][0] / [2][0] and [3][0] / [3][0] and [4][0] / [4][0] and [5][0]
if (students[x][y].compareTo(students[x + 1][y])> 0)
{
temp = students[x][y] ;
students[x][y] = students[x + 1][y];
students[x + 1][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + 1][y + 1];
students[x + 1][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + 1][y + 2];
students[x + 1][y + 2] = temp;
}
x = 0; y = 1;
//compare the top array with bottom strings
for (int j = x + 2; j< arrlen; j++)
{
if (students[x][y].compareTo(students[x + 2][y])> 0 )
{
temp = students[x][y] ;
students[x][y] = students[x + j][y];
students[x + j][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + j][y + 1];
students[x + j][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + j][y + 2];
students[x + j][y + 2] = temp;
}
}
}
}
else
{
if( x < arrlen - 1)
{
for (x = 0; x < arrlen; x++)
{
if (students[x][y].compareTo(students[x + 1][y]) == 0)
{
if (students[x][y + 1].compareTo(students[x + 1][y + 1])> 0)
{
temp = students[x][y] ;
students[x][y] = students[x + 1][y];
students[x + 1][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + 1][y + 1];
students[x + 1][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + 1][y + 2];
students[x + 1][y + 2] = temp;
}
x = 0; y = 1;
for (int j = x + 2; j< arrlen; j++)
{
if (students[x][y].compareTo(students[x + 2][y])> 0 )
{
temp = students[x][y] ;
students[x][y] = students[x + j][y];
students[x + j][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + j][y + 1];
students[x + j][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + j][y + 2];
students[x + j][y + 2] = temp;
}
}
}
}
}
}
}
if ( column == 3)
y = 2;
{
if( x < arrlen - 1)
{
for (x = 0; x < arrlen; x++)
{
//swap array[0][0] and array [1][0] / [1][0] and [2][0] / [2][0] and [3][0] / [3][0] and [4][0] / [4][0] and [5][0]
if (students[x][y].compareTo(students[x + 1][y])> 0)
{
temp = students[x][y] ;
students[x][y] = students[x + 1][y];
students[x + 1][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + 1][y + 1];
students[x + 1][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + 1][y + 2];
students[x + 1][y + 2] = temp;
}
x = 0; y = 2;
//compare the top array with bottom strings
for (int j = x + 2; j< arrlen; j++)
{
if (students[x][y].compareTo(students[x + 2][y])> 0 )
{
temp = students[x][y] ;
students[x][y] = students[x + j][y];
students[x + j][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + j][y + 1];
students[x + j][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + j][y + 2];
students[x + j][y + 2] = temp;
}
}
}
}
else
{
if( x < arrlen - 1)
{
for (x = 0; x < arrlen; x++)
{
if (students[x][y].compareTo(students[x + 1][y]) == 0)
{
if (students[x][y + 1].compareTo(students[x + 1][y + 1])> 0)
{
temp = students[x][y] ;
students[x][y] = students[x + 1][y];
students[x + 1][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + 1][y + 1];
students[x + 1][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + 1][y + 2];
students[x + 1][y + 2] = temp;
}
x = 0; y = 2;
for (int j = x + 2; j< arrlen; j++)
{
if (students[x][y].compareTo(students[x + 2][y])> 0 )
{
temp = students[x][y] ;
students[x][y] = students[x + j][y];
students[x + j][y] = temp;
temp = students[x][y + 1] ;
students[x][y + 1] = students[x + j][y + 1];
students[x + j][y + 1] = temp;
temp = students[x][y + 2] ;
students[x][y + 2] = students[x + j][y + 2];
students[x + j][y + 2] = temp;
}
}
}
}
}
}
}
System.out.println();
System.out.println("modified array is:");
System.out.println();
for(int count1 = 0; count1 < arrlen -1; count1++)
{
for(int count2 = 0; count2 < arrlen -2; count2++)
{
System.out.print(students[count1][count2] + " \t" );
}
System.out.println();
}
}
}