Please Help With Java Program

Post » Fri Dec 04, 2015 1:00 pm

I have een working on this program for a while and I think I've made much more progress. My java skills are not very good, but I think I'm close. Everything should compile without issue except for my "public void run" in my worker class. The program prompts the user for how many threads they want and then parses through a text file of random numbers to find all the prime numbers. My issue seems to be in the algorithm for the prime numbers. How do I write the algorithm so it parses the data down and finds the prime numbers? How should I determine if a number is prime? Remember it is reading from my text file of random integers from 0 to 1,000,000.

I have posted the entire program below, but please see the worker class towards the bottom. Any help would be greatly appreciated in solving this issue. Thank you.

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.util.Scanner;

public class PrimeNumbers{

public static void main(String[] args) throws IOException {

int[] numbers = new int[100000];

int count;

int index = 0;

String datafile = "dataset529.txt"; //string which contains datafile

String line; //current line of text file

try (BufferedReader br = new BufferedReader(new FileReader(datafile))) { //reads in the datafile

while ((line = br.readLine()) != null) { //reads through each line

numbers[index++] = Integer.parseInt(line); //pulls out the number of each line and puts it in numberset[]

}

}

System.out.println("How many threads would you like to use?");

Scanner scan = new Scanner(System.in);

int z = scan.nextInt();

Thread[] threads = new Thread[z]; //creates threads as per user

worker[] finder = new worker[z]; //assigns finder to each thread created

int range = numbers.length / z; //breaks up each worker into a section depending on thread count.

for (count = 0; count < z; count++) {

int startAt = count * range;

int endAt = startAt + range;

finder[count] = new worker(startAt, endAt, numbers);

}

for (count = 0; count < z; count++) { //moves to next thread

threads[count] = new Thread(finder[count]);

threads[count].start();

}

boolean processing = false;

do {

processing = false;

for (Thread t : threads) {

if (t.isAlive()) {

processing = true;

break;

}

}

} while (processing);

for (worker worker : finder) {

System.out.println("Max of thread is: " + worker.getPrime());

}

}

public static class worker implements Runnable {

private int start;

private int stop;

private int numberset[];

public worker(int start, int stop, int[] numberset) {

this.start = start;

this.stop = stop;

this.numberset = numberset;

}

@Override

public void run() {

for (int x = start; x < stop; x++) {

if (numberset[]%3 && != 1 && != 2 && !=3)

return prime

}

}

public int getPrime() {

return true

}

}

}

User avatar
Ludivine Dupuy
 
Posts: 3418
Joined: Tue Mar 27, 2007 6:51 pm

Return to III - Morrowind