2010-03-29 2 views
0

Dans le code, mem est un de mémoire de classe et getMDR et getMAR ruturn ints. Lorsque j'essaie de compiler le code, j'obtiens les erreurs suivantes ... Comment puis-je résoudre ce problème?Java - Message d'erreur Aide

Computer.java:25: write(int,int) in Memory cannot be applied to (int) 
        Input.getInt(mem.write(cpu.getMDR())); 
            ^
Computer.java:28: write(int,int) in Memory cannot be applied to (int) 
         mem.write(cpu.getMAR()); 

Voici le code pour l'ordinateur:

class Computer{ 
    private Cpu cpu; 
    private Input in; 
    private OutPut out; 
    private Memory mem; 
    public Computer() 
    { 
     Memory mem = new Memory(100); 
     Input in = new Input(); 
     OutPut out = new OutPut(); 
     Cpu cpu = new Cpu(); 
     System.out.println(in.getInt()); 
    } 
    public void run() 
    { 
     cpu.reset(); 
     cpu.setMDR(mem.read(cpu.getMAR())); 
     cpu.fetch2(); 
     while (!cpu.stop()) 
      { 
       cpu.decode(); 
       if (cpu.OutFlag()) 
        OutPut.display(mem.read(cpu.getMAR())); 
       if (cpu.InFlag()) 
        Input.getInt(mem.write(cpu.getMDR())); 
       if (cpu.StoreFlag()) 
        { 
         mem.write(cpu.getMAR()); 
         cpu.getMDR(); 
        } 
       else 
        { 
         cpu.setMDR(mem.read(cpu.getMAR())); 
         cpu.execute(); 
         cpu.fetch(); 
         cpu.setMDR(mem.read(cpu.getMAR())); 
         cpu.fetch2(); 
        } 
      } 
    } 

Voici le code pour mémoire:

class Memory{ 
    private MemEl[] memArray; 
    private int size; 
    public Memory(int s) 
    {size = s; 
     memArray = new MemEl[s]; 
     for(int i = 0; i < s; i++) 
      memArray[i] = new MemEl(); 
    } 
    public void write (int loc, int val) 
    {if (loc >=0 && loc < size) 
      memArray[loc].write(val); 
     else 
      System.out.println("Index Not in Domain"); 
    } 
    public int read (int loc) 
    {return memArray[loc].read(); 
    } 
    public void dump() 
    { 
     for(int i = 0; i < size; i++) 
      if(i%1 == 0) 
       System.out.println(memArray[i].read()); 
      else 
       System.out.print(memArray[i].read()); 
    } 
} 

Voici le code pour getMAR et getMDR:

public int getMAR() 
{ 
    return ir.getOpcode(); 
} 
public int getMDR() 
{ 
    return mdr.read(); 
} 

Répondre

1

Votre classe Memory a une méthode write (int, in t). Vous l'appelez avec un seul int. Comme si c'était write (int). Java se plaint de ce que: "Computer.java:28: write (int, int) dans la mémoire ne peut pas être appliqué à (int)". Donc, soit vous manquez votre paramètre de localisation (loc) ou votre paramètre de valeur (val); en fonction de ce que le code est supposé faire.