Проблема с чтением целочисленного файла в массив и пузырьковой сортировкой

#java #arrays #file #bubble-sort

#java #массивы #файл #пузырьковая сортировка

Вопрос:

Я не получаю никаких ошибок перед компиляцией, все выполняется, но мой вывод должен представлять собой пару целых чисел из текстового файла, а не набор случайных символов и чисел. Я не уверен, что не так, но моей задачей было прочитать файл целых чисел в массив, а затем отсортировать с помощью метода bubblesort. Вывод выглядит следующим образом: Порядок отсортированного массива: [I @ 42a57993Sorted Порядок массива: [I @ 42a57993Sorted Порядок массива: [I @ 42a57993sorted Порядок массива: [I @ 42a57993. Любая помощь — хорошая помощь, насколько это касается меня. Спасибо.

 import java.io.File;
import java.io.FileNotFoundException;

public class Array {

    public static void main(String[] args) {
        
        int[] arr = new int[10];
        int i = 0;
    
        
    
        Scanner input = new Scanner(System.in);
        
        
        try {
        
        System.out.print("Enter the file name:");
        String fileName = input.next();
        Scanner readFile = new Scanner(new File(fileName));
        while (readFile.hasNext()) {
            try {
                arr[i] = readFile.nextInt();
                i  ;
            } catch (InputMismatchException e) {
                readFile.next();
            }
            
        bubbleSort(arr);
        System.out.print("Sorted Array order: "   arr);
            input.close();
                
        }}catch(FileNotFoundException e) {
            System.out.println("Error occured");
            e.printStackTrace();
        }
        
        }

    

static void bubbleSort(int[] arr) {  
    int n = arr.length;  
    int temp = 0;  
     for(int i=0; i < n; i  ){  
             for(int j=1; j < (n-i); j  ){  
                      if(arr[j-1] > arr[j]){   
                             temp = arr[j-1];  
                             arr[j-1] = arr[j];  
                             arr[j] = temp;  
                     }  
                      
             }  
     }  

}}
  

Ответ №1:

Немного изменил его и, похоже, получил правильный вывод

 package com.kanhaiyakumawat.stackoverflow;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;

public class Array {

    public static void main(String[] args) {

        int[] arr = new int[10];
        int i = 0;


        Scanner input = new Scanner(System.in);


        try {

            System.out.print("Enter the file name:");
            String fileName = input.next();
            Scanner readFile = new Scanner(new File(fileName));
            while(readFile.hasNext()) {
                try {
                    arr[i] = readFile.nextInt();
                    i  ;
                } catch(InputMismatchException e) {
                    readFile.next();
                }

            }
            bubbleSort(arr);
            System.out.print("Sorted Array order: "   Arrays.toString(arr));
        } catch(FileNotFoundException e) {
            System.out.println("Error occured");
            e.printStackTrace();
        }finally {
            input.close();
        }

    }


    static void bubbleSort(int[] arr) {
        int n = arr.length;
        int temp = 0;
        for(int i = 0; i < n; i  ) {
            for(int j = 1; j < (n - i); j  ) {
                if(arr[j - 1] > arr[j]) {
                    temp = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = temp;
                }

            }
        }

    }
}
  

Вывод:

 Enter the file name:/Users/kkumawat/githome/personal/practice/src/main/java/com/kanhaiyakumawat/stackoverflow/myfile.txt
Sorted Array order: [0, 0, 0, 0, 0, 0, 0, 0, 5, 10]
Process finished with exit code 0