Java - 读取.txt文件并存储为Array

时间:2016-12-07 00:41:32

标签: java arrays sorting readfile

我需要以下代码的帮助 -

程序应该读取一个整数列表的文本文件,根据用户的选择按升序或降序对它们进行排序,并将其导出为文本文件。在我尝试使用第一种方法中的java读取文件之前,整数作为数组包含在代码中时,代码工作正常。之后,没有打印任何内容以匹配用户输入。

这是我目前所拥有的:

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;
                }
            }
        }}
} 

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

替换readFiles method
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; 
}

并确保input.txt位于当前目录下。