所以我似乎无法让我的程序读取文件“testOne.txt”并且它不断抛出未找到的文件异常。我正在使用eclipse并将testOne.txt文件保存在项目的src文件夹中。我希望另一组眼睛能够发现为什么我的程序找不到文本文件。
*编辑 - 我能够解决初始问题,但我遇到了另一个与原始问题无关的问题。现在我在我的Main类的第8行得到一个NullPointerException(我刚刚在我的BubbleSort类下面发布)。是因为我错误地声明了数组还是什么?
package cse.unl;
import java.util.*;
import java.io.File;
import java.io.FileNotFoundException;
public class BubbleSort {
int[] array;
public BubbleSort(String filename) {
Scanner scanner;
try {
scanner = new Scanner(new File("testOne.txt"));
} catch (FileNotFoundException ex) {
System.out.println("File Not Found");
return;
}
while(scanner.hasNext()){
String[] numbers = scanner.next().split(",");
int array[] = new int[numbers.length];
for (int i=0; i<numbers.length; i++){
array[i] = Integer.parseInt(numbers[i]);
}
}
}
public void print() {
for(int m=0; m<array.length;m++){
System.out.println(array[m]);
}
}
public void sort() {
for(int j=0; j<array.length;j++){
if(array[j]>array[j-1]){
int temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
}
}
*编辑 - 主要课程
package cse.unl;
public class Main {
public static void main(String args[]){
BubbleSort myBubSort = new BubbleSort("tesOne.txt");
myBubSort.sort();
myBubSort.print();
}
}
答案 0 :(得分:2)
试
new File("src/testOne.txt")
编辑:
对于您的第二个问题,我发现您的int[] array
课程BubbleSort
字段 未初始化 (导致NPE)
我看到你在构造函数中使用局部变量(记住,局部变量的优先级高于类字段)
String[] numbers = scanner.next().split(",");
(here) ---> int array[] = new int[numbers.length];
应该是
String[] numbers = scanner.next().split(",");
array = new int[numbers.length];
这样就初始化了类字段。
答案 1 :(得分:0)
还要在 PROJECT MAIN
文件夹中保留一份文件副本,因为在运行系统时会从项目主文件夹中调用类文件。
答案 2 :(得分:0)
Eclipse在项目根目录中查找文件。因此,将文件放在项目目录下应该可以使它工作。
建议:但是对于您的部署方案,您可能需要为文件选择更好的路径
答案 3 :(得分:0)
来自Javadoc:http://docs.oracle.com/javase/6/docs/api/java/io/File.html
A pathname, whether abstract or in string form, may be either absolute or relative. An absolute pathname is complete in that no other information is required in order to locate the file that it denotes. A relative pathname, in contrast, must be interpreted in terms of information taken from some other pathname. By default the classes in the java.io package always resolve relative pathnames against the current user directory. This directory is named by the system property user.dir, and is typically the directory in which the Java virtual machine was invoked.
您指定了相对路径名,这意味着该文件必须位于当前用户目录中。请尝试指定绝对路径。
答案 4 :(得分:0)
请将其放在主项目文件夹中名为“resources”的新文件夹中。 并在Java Build Path Source选项卡中添加它。
在文本文件中指定文件夹路径。
File file = new File("./filename.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
这可能有助于你。