这是我的代码,我有一个应该读取文件并将每个整数添加到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();
}
}
我的问题出现在每当我运行main时,没有任何东西弹出。我尝试了一些解决方案,例如创建一个新文件并在其中只放置大约15个整数,以便程序没有那么多的读取,并且还将文件从其原始的“.dat”格式更改为“ .txt“文件,但那些没有取得成功的结果。
答案 0 :(得分:0)
https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner(java.io.File)
根据Java Scanner API,您可以向其发送要读取的文件。在您的情况下,您正在使用 -
new Scanner (String)
- 这意味着你正在阅读传递它的任何String,而不是文件本身。尝试像 -
这样的东西File file = new File("yourFileName.txt");
Scanner scanner = new Scanner(file);
答案 1 :(得分:0)
正如上面已经提到的,您的问题实际上是您通过new Scanner("numbers.txt")
而非new Scanner(new File("numbers.txt"))
初始化扫描程序。
另外,我注意到,您正在尝试在阅读后对列表进行排序。您的方法看起来很糟糕[{3}}。但如果排序不是您当前的任务,您可以使用Collections.sort(myList)
代替
dividePoint();
sort();
merge();