0

Here's what it looks like:

enter image description here

And here's my code:

import java.util.*; import java.io.*; public class ProcessSchedulingDemo { public static void main(String[] args) throws IOException { File file = new File("process-schedule.txt"); Scanner inputFile = new Scanner(file); ArrayList<Process> processes = new ArrayList<Process>(); // Skip past the first line, which is the column headers inputFile.nextLine(); while (inputFile.hasNext()) { int processID = Integer.parseInt(inputFile.next()); int timeUnitsRequired = Integer.parseInt(inputFile.next()); int priority = Integer.parseInt(inputFile.next()); int timeOfArrival = Integer.parseInt(inputFile.next()); // Create and add to process a new process based on the information given Process process = new Process(processID, timeUnitsRequired, priority, timeOfArrival); processes.add(process); } Scanner keyboard = new Scanner(System.in); System.out.print("How much time does the CPU hold onto each process? "); int holdTime = keyboard.nextInt(); if (holdTime <= 0) { while (holdTime <= 0) { System.out.print("Value must be greater than 0. Please input new value: "); holdTime = keyboard.nextInt(); } } Heap<Process> processHeap = new Heap<Process>(); // Holds a particular process being processed Process[] CPU = new Process[1]; CPU[0] = null; int turn = 1; int timeSlices = 0; do { // Check if the list of processes has processes that should be added at the current turn for (int i = processes.size() - 1; i >= 0; i--) { if (processes.get(i).getTimeOfArrival() == turn) { processHeap.add(processes.remove(i)); } } // Print current standing of the processHeap at the beginning of the turn processHeap.enumerate(); // If there currently isn't an item being processed by the CPU if (CPU[0] == null) { CPU[0] = processHeap.deleteMax(); timeSlices = holdTime; System.out.println("got to cpu setting"); } if (CPU[0].getTimeUnitsRequired() == 0 || timeSlices == 0) { if (CPU[0].getTimeUnitsRequired() > 0) { processHeap.add(CPU[0]); } CPU[0] = null; } else { CPU[0].setTimeUnitsRequired(CPU[0].getTimeUnitsRequired() - 1); timeSlices--; if (CPU[0].getTimeUnitsRequired() == 0 || timeSlices == 0) { if (CPU[0].getTimeUnitsRequired() > 0) { processHeap.add(CPU[0]); } CPU[0] = null; } } if (CPU[0] != null) { System.out.println("-- STATE OF CPU --"); System.out.println("[" + CPU[0].getProcessID() + ", " + CPU[0].getTimeUnitsRequired() + ", " + CPU[0].getPriority() + "]\n"); } turn++; } while (processes.size() != 0 && processHeap.size() != 0); } } 

What on earth is causing it? EVERY time I save it pops up. Argh. (Using Eclipse)

1
  • I'd recommend changing the question title to tell more about the error. Commented Nov 26, 2012 at 2:44

2 Answers 2

4

Scanner is part of the Java run time libraries, provided by Oracle (if you're using the Oracle JDK). I think it should be included with the JDK as a file called src.zip. You can click the Edit Lookup Path button and add this file. It should be in your Java JDK install directory.

Sign up to request clarification or add additional context in comments.

1 Comment

But, my code works flawlessly. The error pops up seemingly at random when I save. My code executes flawlessly, without errors, and with the expected output.
1

Eclipse debugging works with the class actually loaded by the program.

Something you installed wrong to some file is missing in your project that why you get this errorThis can happen for several reasons but have a look at the location where the classes showing this behaviour is found (look in the navigation pane to identify it). You will most likely need to change the build path of the project to avoid using this jar and have the JVM use the project instead

you can use this link to solved your problem - http://www.vogella.com/articles/Eclipse/article.html#classpath

Please update your java and Eclipse.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.