簡體   English   中英

我不確定我的程序正在讀取我要求它輸入的文件

[英]I'm not sure my program is reading the file input I've asked it to

這是我分配給我的代碼,應該讀取文件並將每個整數添加到ArrayList中,將列表分成兩半,然后將一半放入一個列表中,再將另一半放入列表中,對列表進行排序,然后合並並打印來自隨機索引的整數中的50個。 該文件包含大量整數,所以這就是隨機數的索引很高的原因。

import java.util.*;
import java.io.*;
public class ProjectList 
{
    static ArrayList<Integer> myList = new ArrayList<>();
    static ArrayList<Integer> myList1 = new ArrayList<>();
    static ArrayList<Integer> myList2 = new ArrayList<>();
    static int size = myList.size();
    static int size1 = myList1.size();
    static int size2 = myList2.size();

    public static void readFile() throws FileNotFoundException
    {
        Scanner input = new Scanner("numbers.txt");
        while (input.hasNextInt())
        {
            myList.add(input.nextInt());
        }
    }

    public static void dividePoint()
    {
        for (int i = 0; i < size/2; i++)
        {
            myList1.add(myList.get(i));
        }
        for (int i = size/2; i < size; i++)
        {
            myList2.add(myList.get(i));
        }
    }

    public static void sort()
    {
        int x = 0;
        int y = 0;
        for (int j = 0; j < size; j++)
        {
            for (int i = 0; i < size - 1; i++)
            {
                x = myList1.get(i);
                y = myList1.get(i + 1);
                if (x > y)
                {
                    myList1.remove(i);
                    myList1.remove(i + 1);
                    myList1.add(i, y);
                    myList1.add((i + 1), x);
                }
            }
        }
        for (int j = 0; j < size; j++)
        {
            for (int i = 0; i < size - 1; i++)
            {
                x = myList2.get(i);
                y = myList2.get(i + 1);
                if (x > y)
                {
                    myList2.remove(i);
                    myList2.remove(i + 1);
                    myList2.add(i, y);
                    myList2.add((i + 1), x);
                }
            }
        }
    }

    public static void merge()
    {
        while (size1 + size2 > 0)
        {
            int x = myList1.get(0);
            int y = myList2.get(0);
            if (x < y)
            {
                myList.add(myList1.get(0));
                System.out.println("Now removing " + myList1.get(0) + "from myList1.");
                myList1.remove(0);
            }
            if (y < x)
            {
                myList.add(myList2.get(0));
                myList2.remove(0);
            }
        }
    }

    public static void printRandom()
    {
           Random dice = new Random();
           int random = dice.nextInt(1000);
           for (int i = random; i < random + 51; i++)
           {
               System.out.println(myList.get(i));
           }
    }

    public static void main(String[] args) throws FileNotFoundException
    {
        readFile();
        dividePoint();
        sort();
        merge();
        printRandom();
    }
}

我的問題是,每當我運行主電源時,什么都不會彈出。 我嘗試了幾種解決方案,例如制作一個新文件,並在其中僅放置約15個整數,以使程序無需讀取太多內容,還可以將文件從其原始的“ .dat”格式更改為“ .txt”文件,但未成功。

https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner(java.io.File)

根據Java Scanner API,您可以向其發送文件以供讀取。 就您而言,您正在使用-

new Scanner (String)

-這意味着您正在讀取傳遞給它的任何字符串,而不是文件本身。 嘗試類似的東西-

File file = new File("yourFileName.txt");
Scanner scanner = new Scanner(file);

正如上面已經問過的,實際上您的問題是,您是通過new Scanner("numbers.txt")而不是new Scanner(new File("numbers.txt"))初始化Scanner的。

另外,我注意到,您正在嘗試閱讀后對列表進行排序。 您的方法看起來像實現合並排序的錯誤 但是,如果排序不是當前的任務,則可以使用Collections.sort(myList)代替

dividePoint();
sort();
merge();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM