[英]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.