我是java的新手,整天都遇到过这个问题。 我正在尝试实现FCFS调度程序,并且我被困在要求用户以字符串形式输入进程数的位置。
还声明了一个类型进程数组,并创建了一个函数,将字符串剪切成表示突发时间和到达时间的整数。
到目前为止这么好,但是当我尝试打印值时出错了
public class Process {
private static int BT;
private static int AT;
Process(){
AT=0;
BT=0;
}
Process(int burst, int arrival){
BT=burst;
AT=arrival;
}
//GETS and SETS
public static void setBT(int burst){
BT=burst;
}
public int getBT(){
return BT;
}
public static void setAT(int arrival){
AT=arrival;
}
public int getAT(){
return AT;
}
}
public static void main(String[] args) {
Process pArray[]=new Process[10];
System.out.println("Choose the Scheduler \n 1-FCFS");
Scanner input =new Scanner(System.in);
int schedulerType = input.nextInt();
switch(schedulerType){
case 1:
System.out.println("You have choosen FCFS Scheduler");
System.out.println("Now enter the Process each seperated by a semicolon where the first number is the Burst time, and the second is the Arrival time separated by a comma");
System.out.println("EX: 1,2;3,4;");
stringcutter( pArray );
System.out.println(pArray[0].getBT());
System.out.println(pArray[0].getAT());
break;
default:
System.out.println("You have entered a wrong scheduler Type");
}
public static void stringcutter(Process[] processArray){
String pString="1,2;3,4;";
String[] array=pString.split(";");
int processesNumber=array.length;
for(int i=0;i<processesNumber;i++){
String[] oneProcess =array[i].split(",");
int burstTime = Integer.parseInt(oneProcess[0]);
int arrivalTime = Integer.parseInt(oneProcess[1]);
processArray[i] =new Process(burstTime,arrivalTime);
}
}
}
我期望输出为数字1和2,而我得到3和4
也运行了调试器,但没有找到问题的运气。
答案 0 :(得分:0)
您正在为变量static
和AT
使用BT
修饰符。静态变量只能有一个实例。因此,请使用非静态字段而不是静态变量。
private int BT;
private int AT;