Есть ли ошибка, которая приводит к отображению неверного среднего времени ожидания? - PullRequest
0 голосов
/ 24 марта 2019

Я кодировал алгоритм приоритетного планирования без вытеснения в Java с GUI. Сначала он запрашивает у пользователя общее количество процессов, а затем создаются текстовые поля и метки в соответствии с количеством процессов, введенных пользователем. После нажатия на кнопку подтверждения отображается среднее время ожидания. Хотя это не дает ошибок, но показывает неправильное среднее время ожидания. Есть ли какие-либо ошибки / изменения, необходимые для получения правильного среднего времени ожидания?

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class fcfs extends JFrame implements ActionListener {
    JButton jb[] = new JButton[3];
    JTextField jt1[], jt2[];
    JLabel jl[], jl1, jl2, jl3;
    JPanel jp, jp1;
    Container con;
    int k, p;
    String str[] = { "SUBMIT", "RESET", "EXIT" };
    String str1[] = { "Process", "   AT", "ST", "WT", "TAT" };
    int x, i, j, a, b, e, f, pos;

    public fcfs() {
        super("Non-preemptive Priority scheduling algoritham");
        con = getContentPane();
        k = Integer.parseInt(JOptionPane.showInputDialog("Enter number of process"));
        jl1 = new JLabel("Process");
        jl2 = new JLabel("Arival Time");
        jl3 = new JLabel("Burst Time");
        jl = new JLabel[k];
        jt1 = new JTextField[k];
        jt2 = new JTextField[k];

        for (int i = 0; i < k; i++) {
            jl[i] = new JLabel("process" + (i + 1));
            jt1[i] = new JTextField(10);
            jt2[i] = new JTextField(10);
        }
        for (int i = 0; i < 3; i++) {
            jb[i] = new JButton(str[i]);
        }
        con.setLayout(new GridLayout(k + 2, 3));
        con.add(jl1);
        con.add(jl2);
        con.add(jl3);
        int l = 0;
        for (int i = 0; i < k; i++) {
            con.add(jl[l]);
            con.add(jt1[l]);
            con.add(jt2[l]);
            l++;
        }
        l = 0;
        for (int i = 0; i < 3; i++) {
            con.add(jb[l]);
            jb[l].addActionListener(this);
            l++;
        }
    }

    public void actionPerformed(ActionEvent ae) {
        int FT[] = new int[k];
        int WT[] = new int[k];
        int TAT[] = new int[k];
        int FT1[] = new int[k];
        float NTAT[] = new float[k];
        float s = 0;
        float avg;
        JPanel main = new JPanel();
        main.setLayout(new BorderLayout());
        jp = new JPanel();
        jp1 = new JPanel();
        jp.setLayout(new GridLayout(k + 1, 7));
        jp1.setLayout(new FlowLayout());
        if (ae.getSource() == jb[2]) {
            System.exit(0);
        } else if (ae.getSource() == jb[0]) {
            for (int i = 0; i < k; i++) {
                pos = i;
                for (int j = i + 1; j < k; j++) {
                    if (Integer.parseInt(jt1[j].getText()) < Integer.parseInt(jt1[pos].getText())) {
                        pos = j;
                    }
                }
                a = Integer.parseInt(jt1[i].getText());
                b = Integer.parseInt(jt1[pos].getText());
                x = a;
                a = b;
                b = x;

                FT[i] = Integer.parseInt(jt2[i].getText());
                FT[pos] = Integer.parseInt(jt2[pos].getText());
                x = FT[i];
                FT[i] = FT[pos];
                FT[pos] = x;

            }

            WT[0] = 0;
            for (i = 1; i < k; i++) {
                WT[i] = 0;
                for (j = 0; j < i; j++) {
                    WT[i] = WT[i] + FT[j];
                }
                s = s + WT[i];
            }
            for (int i = 0; i < 5; i++) {
                jp.add(new JLabel(str1[i]));
            }
            for (int i = 0; i < k; i++) {
                jp.add(new JLabel("process" + (i + 1)));
                jp.add(new JLabel("   " + Integer.parseInt(jt1[i].getText())));
                jp.add(new JLabel("" + Integer.parseInt(jt2[i].getText())));
                jp.add(new JLabel("" + WT[i]));

                jp.add(new JLabel("" + TAT[i]));

            }
            avg = s / k;
            String str2 = "Average Waiting Time is " + avg;
            jp1.add(new JLabel(str2));
            main.add(jp, BorderLayout.NORTH);
            main.add(jp1, BorderLayout.SOUTH);
            JOptionPane.showMessageDialog(null, main, "output", JOptionPane.PLAIN_MESSAGE);
        } else if (ae.getSource() == jb[1]) {
            setVisible(false);
            fcfs window = new fcfs();
            window.setSize(400, 300);
            window.setVisible(true);
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    }

    public static void main(String[] args) {
        fcfs window = new fcfs();
        window.setSize(400, 300);
        window.setVisible(true);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...