Hallo Leute,
zunächst einmal würde ich mich gerne vorstellen. Ich bin 22 Jahre alt und habe neulich mit Java angefangen. Als Übungsaufgabe habe ich vor ein Programm zu schreiben, das "Scheduling" betreibt. In diesem Fall sollen Rechenaufgaben, die unterschiedlich lange Rechendauern benötigen, so auf drei Prozessoren verteilt werden, dass der am längsten rechnende Prozessor eine möglichst kurze Rechenzeit hat. Vier verschiedene Algorithmen sollen implementiert werden, den ersten Algoithmus habe ich bereits erstellt.
Leider komme ich gerade bei einer Aufgabe nicht weiter, weshalb ich darum bitten würde, dass jemand Erfahrenes da einmal drüberschaut. Ich bekomme in der Konsole immer wieder folgenden Error:
Exception in thread "main" java.lang.NullPointerException
at myPackAufg4.Prozessorliste.ermittlungMinProzessor(Prozessorliste.java:57)
at myPackAufg4.Prozessorliste.algorithmusUnsortiert(Prozessorliste.java:25)
at myPackAufg4.Prozessorliste.main(Prozessorliste.java:14)
zunächst einmal würde ich mich gerne vorstellen. Ich bin 22 Jahre alt und habe neulich mit Java angefangen. Als Übungsaufgabe habe ich vor ein Programm zu schreiben, das "Scheduling" betreibt. In diesem Fall sollen Rechenaufgaben, die unterschiedlich lange Rechendauern benötigen, so auf drei Prozessoren verteilt werden, dass der am längsten rechnende Prozessor eine möglichst kurze Rechenzeit hat. Vier verschiedene Algorithmen sollen implementiert werden, den ersten Algoithmus habe ich bereits erstellt.
Leider komme ich gerade bei einer Aufgabe nicht weiter, weshalb ich darum bitten würde, dass jemand Erfahrenes da einmal drüberschaut. Ich bekomme in der Konsole immer wieder folgenden Error:
Exception in thread "main" java.lang.NullPointerException
at myPackAufg4.Prozessorliste.ermittlungMinProzessor(Prozessorliste.java:57)
at myPackAufg4.Prozessorliste.algorithmusUnsortiert(Prozessorliste.java:25)
at myPackAufg4.Prozessorliste.main(Prozessorliste.java:14)
Java:
package myPackAufg4;
public class Prozessor {
int [] jobs = new int [1];
int nr;
public void hinzufuegenJob(int neueJobdauer) {
int [] zwischenSpeicher = new int [jobs.length+1];
for (int i = 0; i < jobs.length; i++) {
zwischenSpeicher[i] = jobs[i];
zwischenSpeicher[zwischenSpeicher.length] = neueJobdauer;
jobs = zwischenSpeicher;
}
}
public int summeArray(int [] j) {
int sum = 0;
for (int i = 0; i < j.length; i++) {
sum = sum + j[i];
}
return sum;
}
}
Java:
package myPackAufg4;
import java.util.Arrays;
public class Prozessorliste {
static int gesamtdauer = 0;
static Prozessor [] prozlist = new Prozessor [3];
public static void main (String args[]) {
int [] jobDauern = new int [] {5, 3, 3, 4, 8, 3};
System.out.println(algorithmusUnsortiert(jobDauern));
algorithmusAufsteigend(jobDauern);
algorithmusAbsteigend(jobDauern);
algorithmusZufall(jobDauern);
}
public static double algorithmusUnsortiert (int [] jobDauern) {
for (int i = 0; i < jobDauern.length; i++) {
ermittlungMinProzessor().hinzufuegenJob(jobDauern[i]);
}
gesamtdauer = ermittlungMaxProzessor().summeArray(ermittlungMaxProzessor().jobs);
return gesamtdauer;
}
public static double algorithmusAufsteigend (int [] jobDauern) {
return gesamtdauer;
}
public static double algorithmusAbsteigend (int [] jobDauern) {
return gesamtdauer;
}
public static double algorithmusZufall (int [] jobDauern) {
return gesamtdauer;
}
public static Prozessor ermittlungMinProzessor () {
int min = 1;
for (int i = 0; i < prozlist.length; i++) {
if (prozlist[i].summeArray(prozlist[i].jobs) < prozlist[min].summeArray(prozlist[i+1].jobs)) {
min = i;
}
}
return prozlist[min];
}
public static Prozessor ermittlungMaxProzessor() {
int max = 1;
for (int i = 0; i < prozlist.length; i++) {
if (prozlist[i].summeArray(prozlist[i].jobs) > prozlist[max].summeArray(prozlist[i+1].jobs)) {
max = i;
}
}
return prozlist[max];
}
}