简体   繁体   中英

Java - Reading .txt file and storing as Array

I need help with the following code-

The program is supposed to read a text file that is a list of integers, sort them according to either ascending or descending order depending on the user's choice and export that as a text file. The code worked fine when the integers were included inside the code as an array, before I attempted to read the file with java in the first method. After, nothing was printed to match user input.

Here's what I have currently:

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

public class BubbleSorting { 

public static int[] readFiles(String file) throws FileNotFoundException{ 
        File f= new File("input.txt"); 
        Scanner x= new Scanner(f); 

        int [] intArray= new int[100]; 

        Scanner s1= new Scanner(f); 

        for (int i=0; i< intArray.length; i++)
            intArray[i] = s1.nextInt(); 

        return intArray; 
    }

public static void main (String[] args) throws FileNotFoundException  { 

int[] intArray= readFiles("input.txt"); 

System.out.println("Select from the following options:\n (A) Sort integers by ascending order \n (B) Sort by descending order "
        + "\n (C) Both. \n Please input your selection below.");

Scanner a = new Scanner(System.in);
String choice = a.nextLine(); 

if (choice.equals("A") || choice.equals("a")) {

    bubbleSortInASC(intArray);   

    System.out.println("You have chosen to sort in ascending order:");   
    //print array after sorting using bubble sort algorithm

    for(int i=0; i < intArray.length; i++){
            System.out.println(intArray[i]);}}

else if (choice.equals("B") || choice.equals("b")) { 

//sort an array in descending order using bubble sort algorithm
bubbleSortDSC(intArray);

System.out.println("You have chosen to sort in descending order:");
//print array after sorting using bubble sort algorithm

for(int i=0; i < intArray.length; i++){
        System.out.println(intArray[i] + " ");
}}

else if (choice.equals("C") || choice.equals("c")) {

    System.out.println("You have chosen to sort in both ascending and descending order.");

    bubbleSortInASC(intArray); 
    System.out.println("In ascending order: "); 
    for(int i=0; i < intArray.length; i++){
        System.out.println(intArray[i]+ " "); }

    bubbleSortDSC(intArray);
    System.out.println("\nIn descending order: "); 
    for(int i=0; i < intArray.length; i++){
        System.out.println(intArray[i]+ " " ); }
}
else { 
    System.out.println("That was not one of the options provided. Please try again."); 
}

    }

public static void bubbleSortDSC(int intArray[]) {

    int n = intArray.length;
    int temp = 0;

    for(int i=0; i < n; i++){
            for(int j=1; j < (n-i); j++){

                    if(intArray[j-1] < intArray[j]){
                            //swap the elements!
                            temp = intArray[j-1];
                            intArray[j-1] = intArray[j];
                            intArray[j] = temp;}      
            }} 
    }

public static void bubbleSortInASC(int numbers[])
    {
        int temp;

        for(int i = 0; i < numbers.length; i++)
        {
            for(int j = 1; j < (numbers.length -i); j++)
            {
                //if numbers[j-1] > numbers[j], swap the elements
                if(numbers[j-1] > numbers[j])
                {
                    temp = numbers[j-1];
                    numbers[j-1]=numbers[j];
                    numbers[j]=temp;
                }
            }
        }}
} 

Any help would be much appreciated.

replace readFiles method with

public static int[] readFiles(String file) throws FileNotFoundException{ 
    File f= new File("input.txt"); 
    //Scanner x= new Scanner(f); //you havent used it

    int [] intArray= new int[10]; 
    Scanner s1= new Scanner(f); 
    for (int i=0; i< intArray.length; i++)
        intArray[i] = s1.nextInt(); 
    s1.close();//should close inputstream after use it
    return intArray; 
}

and make sure the input.txt is under current directory.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM