将对象数组解析为函数

时间:2017-04-12 23:06:33

标签: java arrays

我是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

也运行了调试器,但没有找到问题的运气。

1 个答案:

答案 0 :(得分:0)

您正在为变量staticAT使用BT修饰符。静态变量只能有一个实例。因此,请使用非静态字段而不是静态变量。

private int BT;
private int AT;