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.