Java - 错误消息帮助

标签 java

在代码中,mem是Class Memory和getMDR和getMAR ruturn ints。当我尝试编译代码时出现以下错误......我该如何解决这个问题?

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());

这是计算机的代码:

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();
                    }
            }
    }

这是内存的代码:

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());
    }
}

这是 getMAR 和 getMDR 的代码:

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

最佳答案

您的 Memory 类有一个方法 write(int, int)。 你用一个 int 来调用它。就好像它是 write(int) 一样。

Java 提示:“Computer.java:28: 内存中的 write(int,int) 无法应用于 (int)”。因此,要么您缺少位置(loc)参数,要么缺少值(val)参数;取决于代码应该实际执行的操作。

关于Java - 错误消息帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535737/

相关文章:

java - 在 java 中禁用唯一分区属性模式验证

java - android - 在带有滚动的可扩展 ListView 中加载json

java - 如何在没有数字签名的情况下添加时间戳

java - 具有 spring security 的应用程序之间是否共享 SecurityContextHolder

java - 从对象内的对象调用方法?(Java)

java - 如何在 Android 中发出 httppost 请求?

java - Number 类中的抽象方法

java - 如何修复 java.net.ConnectException : Connection refused in Storm

java - 在 Apache Spark 中指定运行时依赖项

java - 为 JVM 禁用 "internet access"?