You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java SRTF调度算法如何将循环输入值动态赋值给Process数组

实现方案

第一步:确认Process实体类结构

首先确保你的Process类有对应参数的构造方法,标准SRTF场景下的Process类示例如下:

public class Process {
    int pid; // 进程ID
    int art; // 到达时间
    int bt; // 总突发时间
    int remainingBt; // 剩余突发时间,SRTF调度必需字段

    // 补充全参构造方法,用于实例化时直接赋值
    public Process(int pid, int art, int bt) {
        this.pid = pid;
        this.art = art;
        this.bt = bt;
        this.remainingBt = bt; // 初始剩余时间等于总突发时间
    }

    // 原有类里的其他字段、get/set方法保持不变即可
}

第二步:替换原有硬编码数组逻辑

删除你原来写死的静态Process数组代码,替换为以下动态填充逻辑:

原有硬编码代码示例(可直接删除):

Process[] processes = {
    new Process(1, 0, 5),
    new Process(2, 1, 3),
    new Process(3, 2, 4)
};

替换后的动态输入填充代码:

import java.util.Scanner;

public class SRTFScheduler {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 1. 输入进程总数,初始化对应长度的Process数组
        System.out.print("请输入进程总数量:");
        int processCount = sc.nextInt();
        Process[] processes = new Process[processCount];

        // 2. 循环输入每个进程参数,填充数组
        for (int i = 0; i < processCount; i++) {
            System.out.println("\n请输入第" + (i+1) + "个进程的信息:");
            System.out.print("进程ID:");
            int pid = sc.nextInt();
            System.out.print("到达时间:");
            int art = sc.nextInt();
            System.out.print("突发时间:");
            int bt = sc.nextInt();
            // 实例化进程对象,存入数组对应下标位置
            processes[i] = new Process(pid, art, bt);
        }
        sc.close();

        // 此处直接调用你已经写好的SRTF调度逻辑即可,processes数组就是用户输入的动态进程列表
    }
}

特殊场景适配

如果你没有给Process类写带参构造,可以用setter方法逐个赋值,对应循环内的写法调整为:

Process p = new Process();
p.setPid(pid);
p.setArt(art);
p.setBt(bt);
p.setRemainingBt(bt);
processes[i] = p;

内容的提问来源于stack exchange,提问作者Angelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:54:05