我的代码没有运行,所以我使用了eclipse调试器,当我进入那个printf部分时,它显示了一条错误消息:找不到源。
Here is the debugger error message.但是,它仍然会在控制台上打印出find,并且它仅在调试器窗口上显示错误消息,并且不允许我继续存在“实际”错误的下一行。 Here is the stacktrace.
System.out.printf("a: %d\n", curElement.a);
System.out.printf("%d %d %d %d ", curElement.a, curElement.b, curElement.c, curElement.io);
以上两行似乎在调试器窗口中出现“找不到源”错误。 您能帮我解决我的printf问题吗?谢谢。
public class Scheduling2 {
public static void main(String args[]) {
try {
String fileAddress = args[0];
File fileInput = new File(fileAddress); //Read
Scanner scan = new Scanner(fileInput);
int numProcesses = scan.nextInt();
Queue<Process> processes = new LinkedList<Process>();
ArrayList<Process> allProcesses = new ArrayList<Process>();
//LinkedList processes = new LinkedList(); //No need to define the size
int currNumProcesses = 0;
//Adding each process to processes queue
for (int m = 0; m < numProcesses; m++) {
int a = scan.nextInt();
int b = scan.nextInt();
int c = scan.nextInt();
int io = scan.nextInt();
Process thisProcess = new Process(a, b, c, io);
thisProcess.id = m;
processes.add(thisProcess);
allProcesses.add(thisProcess);
currNumProcesses++;
}
printQueue(processes, numProcesses);
FCFS(processes, numProcesses, allProcesses);
printQueue(processes, numProcesses);
}
catch (Exception e){
e.printStackTrace();
System.out.printf(" Error: File not foundd. \n");
}
}
public static void printQueue (Queue processes, int numProcesses) {
Process curElement = (Process) processes.poll();
System.out.printf("The original input was: ");
while(curElement != null) {
System.out.printf("a: %d\n", curElement.a);
System.out.printf("%d %d %d %d ", curElement.a, curElement.b, curElement.c, curElement.io);
curElement = (Process) processes.poll();
}
System.out.print("\n\n");
}
答案 0 :(得分:2)
使用调试器时,当您“进入”任何方法时,它将尝试向您显示该方法的源代码。如果找不到源,它可能仍然可以执行,但无法向您显示相应的源。如果无法执行,则仍可以执行代码。
您的“ FileNotFound”异常告诉您,它找不到您的代码试图打开的文件(或者可能是您试图在其中创建文件的文件夹)。请记住,任何相对文件位置都取决于知道运行代码的进程的“默认目录”。您可以通过确保只有绝对文件位置(即,以驱动器上的根目录开头的文件)来解决该问题,尽管这对于编写要在不同计算机上运行的程序来说可能是个问题。不过,对于学习时的练习,我认为这样做很好。