Member 13620781 Ответов: 1

Программа работает, но нет вывода, и программа не завершается


Я пытаюсь сделать многоуровневое планирование очередей, где

- приоритетом==1 || приоритет==2 с помощью круговой системе в 1 очереди
- приоритетом==3 || приоритет==4 использует первый пришел первый обслужен (алгоритма fcfs) в очереди 2
- приоритет > 4 использует fcfs в очереди 3

код, который я пробовал, неполон, но я пытаюсь запустить его, чтобы увидеть, работает ли он или нет для первых 3 входов, но есть неизвестная ошибка (Я не знаю, как называется эта ошибка), когда программа запускается, но она не показывает никаких выходных данных, и программа не завершается.

процесс с приоритетом BT
p0 0 6 3
П1 1 4 3
Р2 5 6 1

Что я уже пробовал:

public void sortMultilevel(int[] AT, int[] BT, int[] prio, int[] status, int TP)
	{
		int i=0, current=AT[i], j, test;
		while(TP!=0)
		{
			if(prio[i]==1 || prio[i]==2)
			{
				System.out.println("Queue 1:");
				System.out.print("p" + p[i] + " from " + current + " to ");
				// if(nonew())
				// {}
				// else {
				System.out.println(current+quantum);
				BT[i] = BT[i]-quantum;
				status[i]=1;
				current+=quantum;
				break;
				// }
			}
			else if(prio[i]==3 || prio[i]==4)
			{
				System.out.println("Queue 2:");
				System.out.print("p" + p[i] + " from " + AT[i] + " to ");
				// if(nonew())
				// {
					
				// }
				// else
				// {
					test=0;
					for(j=0; j<TP; j++)
					{
						if(AT[j]<current+BT[i])
						{
							if(prio[j]<prio[i])
							{
								System.out.println(AT[j]);
								BT[i] = BT[i]-(AT[j]-current);
								status[i]=1;
								current=AT[j];
								test=1;
								i=j;
								break;
							}
							else
							status[j]=1;
						}
						
					}
				// }
			}
		} // close while loop
	}

Richard MacCutchan

Добавьте еще несколько операторов печати в конце цикла while, чтобы увидеть, какие переменные не изменяются. Это лучшее, что я могу предложить, поскольку я не могу понять, что именно этот код должен делать.

1 Ответов

Рейтинг:
0

Patrice T

Цитата:
Программа работает, но нет вывода, и программа не завершается

А как насчет того, чтобы посмотреть, как вы программируете, чтобы понять, что происходит?

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш cpde, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
Отладчик - Википедия, свободная энциклопедия[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


Member 13620781

могу ли я узнать, как отлаживать свой java-код в notepad++? Я искал его в интернете и смотрел на youtube об этом, но я его не понимаю. Нужно ли мне устанавливать плагин dbgp? извините, но я действительно Новичок в этой области. Заранее спасибо.

Patrice T

Я не буду очень полезен в этом, потому что я не использую NotePad++ или Java.
но должно быть что-то полезное в 400000 ответах Google notepad++ java debugger