Why is my bubble not working? Java

First post! I have a task, because of which I need to write a java program that reads data from a text file and sorts it by offset and their initials. The text file is as follows:

John Doe 75
Joe Blow 65
Mary Smith 80
John Green 82
Jill White 97

Here is my code:

import java.util.Scanner;
public class HelloWorld{
public static void main(String[] args) throws Exception{
    String[] firstName = new String[5];
    String[] lastName = new String[5];
    int score[] = new int[5];
    java.io.File file = new java.io.File("data.txt");
    Scanner input = new Scanner(file);

        int c=0;
        while(input.hasNext()){
            firstName[c] = input.next();
            lastName[c] = input.next();
            score[c] = input.nextInt();
            c++;
        }
        input.close();

    MichaelBubbleSort(score);
    for(int x=4;x>=0;x--){
        System.out.print(firstName[x].substring(0,1) + lastName[x].substring(0,1) + " " + score[x]);
        System.out.println();
    }
}


public static void MichaelBubbleSort(int[] arr){
    int temp;
    for(int i=0; i < arr.length-1; i++){

        for(int j=1; j < arr.length-i; j++){
            if(arr[j-1] > arr[j]){
                temp=arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = temp;
       }
     }
   }
 }

}

But for some reason, it always appears as:

JW 97                                                                                                                                                            
JG 82                                                                                                                                                            
MS 80                                                                                                                                                            
JB 75                                                                                                                                                            
JD 65  

The output should be:

JW 97
JG 82
MS 80
JD 75
JB 65

Any reasons why this is happening?

+4
source share
2 answers

This solution is according to your code. but the code should be better than that. You must use collection classes. In this code, you need to change the names accordingly.

import java.util.Scanner;

public class HelloWorld{
    public static void main(String[] args) throws Exception {
        String[] firstName = new String[5];
        String[] lastName = new String[5];
        int score[] = new int[5];
        java.io.File file = new java.io.File("D:\\test.txt");
        Scanner input = new Scanner(file);

        int c = 0;
        while (input.hasNext()) {
            firstName[c] = input.next();
            lastName[c] = input.next();
            score[c] = input.nextInt();
            c++;
        }
        input.close();

        MichaelBubbleSort(score,firstName,lastName);
        for (int x = 4; x >= 0; x--) {
            System.out.print(firstName[x].substring(0, 1)
                    + lastName[x].substring(0, 1) + " " + score[x]);
            System.out.println();
        }
    }

    public static void MichaelBubbleSort(int[] arr,String[] firstName, String[] lastName) {
        int temp;
        String tempFirstName,tempLastName;
        for (int i = 0; i < arr.length - 1; i++) {

            for (int j = 1; j < arr.length - i; j++) {
                if (arr[j - 1] > arr[j]) {
                    temp = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = temp;

                    tempFirstName = firstName[j -1];
                    firstName[j - 1] = firstName[j];
                    firstName[j] = tempFirstName;

                    tempLastName = lastName[j -1];
                    lastName[j - 1] = lastName[j];
                    lastName[j] = tempLastName;
                }
            }
        }
    }
}
+2
source

, . , :

public class B{

public static void MichaelBubbleSort(Person[] arr){
    Person temp;
    for(int i=0; i < arr.length-1; i++){

        for(int j=1; j < arr.length-i; j++){
            if(arr[j-1].score > arr[j].score){
                temp=arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = temp;
            }
        }
    }
}

public static void main(String x[]){
    Person [] a={new Person("John","Doe",75),new Person("Joe","Blow",65),new Person("Mary","Smith",80),new Person("John","Green", 82),new Person("Jill","White", 97)};
    MichaelBubbleSort(a);

    for(Person i:a){
        System.out.println(i.FirstName+" "+i.LastName+" "+i.score);
    }

}
}

class Person{
    int score;
    String FirstName;
    String LastName;

    Person(String FName,String LName,int Score){
        this.score=Score;
        this.FirstName=FName;
        this.LastName=LName;
    }
}
+2

Source: https://habr.com/ru/post/1583916/


All Articles