-1

私の OS クラスの課題の一部では、Java でさまざまなフィールドを持つ Process Control Block クラスを作成する必要があります。名前、状態、到着時間など、さまざまなフィールドをすべて含むクラスを既に作成しています。

  • レジスタセット値 (次のフィールドを含むクラス「RegisterSet」のオブジェクト: XAR、XDI、XDO、PC、IR、EMIT、RR、PSW、R0、R1、R2、R3、R4、R5、R6、R7)。

これらのさまざまなフィールドをすべて備えた RegisterSet という別のクラスを作成する必要があるようですが、それを行う方法と、PCB クラスで設定値を作成する方法に固執しています...

どんな助けでも大歓迎です。

これが私が持っているものです。各レジスタのセッターとゲッターを持つ RegisterSet クラスがあり、PCB クラスには次のような setValues 関数があります。

public void setValues(String XAR,
                        String XDO, String PC, String IR,
                        String EMIT, String RR, String PSW,
                        String R0, String R1, String R2,
                        String R3, String R4, String R5, String R6,
                        String R7){
    RegisterSet reg = new RegisterSet();
    reg.setXAR(XAR);
    reg.setXDO(XDO);
    reg.setPC(PC);
    reg.setIR(IR);
    reg.setEMIT(EMIT);
    reg.setRR(RR);
    reg.setPSW(PSW);
    reg.setR0(R0);
    reg.setR1(R1);
    reg.setR2(R2);
    reg.setR3(R3);
    reg.setR4(R4);
    reg.setR5(R5);
    reg.setR6(R6);
    reg.setR7(R7);
}

次に、RegisterSet クラスで作成した ToString() を実行する getValues メソッドがあります。

public String getValues(){
    RegisterSet reg = new RegisterSet();
    return reg.ToString();
}

そして最後に、これが私が自分のシムで実行しようとしているものです:

//Remaining are Registers
String xar = st.nextToken();
String xdi = st.nextToken();
String xdo = st.nextToken();
String pc = st.nextToken();
String ir = st.nextToken();
String emit = st.nextToken();
String rr = st.nextToken();
String psw = st.nextToken();
String r0 = st.nextToken();
String r1 = st.nextToken();
String r2 = st.nextToken();
String r3 = st.nextToken();
String r4 = st.nextToken();
String r5 = st.nextToken();
String r6 = st.nextToken();
String r7 = st.nextToken();
PCB.setValues(xar, xdi, xdo, pc, ir, emit, rr, psw,
        r0, r1, r2, r3, r4, r5, r6, r7);

コンパイルしようとすると、次のエラーが表示されます。

 required:     String,String,String,String,String,String,String,String,String,String,String,String,String,String,String
 found: String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String
 reason: actual and formal argument lists differ in length

基本的に、私は多くのプロセスからさまざまな詳細を読み取り、データを PCB に入力してから、その PCB をプロセス テーブル (実際には単なる ArrayList) に追加しています。その後、ArrayList を繰り返し処理し、各プロセスを出力します。

4

1 に答える 1

0

次のようなことを試しましたか:

class PCB {
    ...
    RegisterSet registerSet = new RegisterSet();

    public RegisterSet getRegisterSet() { return this.registerSet; }
    public void setRegisterSet(RegisterSet rs) { this.registerSet = rs; }
    ...
}

これはあなたの直接の質問に答えますが、どういうわけか、これがあなたの質問の意図がわかりません.

于 2012-09-18T00:28:37.773 に答える