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
相关产品推荐
相关产品推荐

