Как отсортировать массив строк в соответствии с пользовательским вводом - PullRequest
0 голосов
/ 11 ноября 2018

Я попытался отсортировать массив строк, используя пользовательский ввод столбца, который они хотят редактировать. Однако отсортированный массив не может быть отображен. Я не знаю, как изменить или где изменить. Здесь массив 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(); 
    }

} 
}
...