2017-04-12 1 views
-2

저는 java를 처음 사용하여 하루 종일이 문제가 발생했습니다. FCFS 스케줄러를 구현하려고하는데 사용자가 문자열 형식으로 프로세스 수를 입력하라는 메시지가 표시되는 곳에 막혔습니다.개체 배열을 함수로 구문 분석

또한 process 유형의 배열로 선언되고 문자열을 버스트 시간 및 도착 시간을 나타내는 정수로 자르는 기능을 수행했습니다.

지금까지 너무 좋아하지만 난 인쇄 할 때 값 뭔가 간다}

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를 얻고있다

도 디버거를 실행했지만 p를 찾지 못했다. 흠집.

+0

@RAZ_Muh_Taz 문제는 당신의 도움에 대해 둘 이상의 static 변수 Thansk를 사용하는 것이 었습니다. – AhmedWael

답변

0

ATBT 변수에 static 수정자를 사용 중입니다. 정적 변수의 인스턴스는 하나만있을 수 있습니다. 따라서 정적 변수 대신에 비 정적 필드를 사용하십시오.

private int BT; 
private int AT; 
+0

그래, 그게 고마워 많이 일했다. – AhmedWael

관련 문제