tags:

views:

104

answers:

4

Ok so I have a package for a Memory System...I have Class Memory, MemEl and Test....I need some help editing my code..i cant figure out whats wrong with it. So if you could give me some pointers or help me edit my code, it would be very helpful...Thanks...also for my MemEl I am trying to make a constructor for MemEl(Int), MemEl(long), and MemEl(String)...I have MemEl(),MemEl(byte) and MemEl(short) done....can I do the Int and Long the same way as the short and byte?

Right now when I try to compile Memory or MemEl I get the error

javac MemEl.java
MemEl.java:9: missing return statement
}
^
MemEl.java:13: missing return statement
}
^
MemEl.java:17: missing return statement
}
^

So how would I fix this? All I am doing is trying to make constructors that convert ints to bytes and ints to shorts and so on so I am a little confused about this error.

Here is my code for Memory.java

class Memory{

    //Here are my instance variables, MemEl[] which is an array of memory elements and I h\
ave my interger size, which is the amount of memory locations available.//

    private MemEl[] memArray;
    private int size;

    //Here are my Constructors for my Memory system.//

    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 MemEl read (int loc)
    {return memArray[loc];
    }
    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());

    }
}

Here is my MemEl file code


    class MemEl{

     //MemEl is a memory element with all the characteristics of memory. It can write some val\
     to some address and read some address and return the "elements" or value that are located\
     at that memory location.//

    private int elements;
    public Memory MemEl()
    {
        elements = 0;
    }
    public Memory MemEl(byte b)
    {
        elements = b;
    }
    public Memory MemEl(short s)
    {
        elements = s;
    }
    public int read()
    {
        return elements;
    }
    public void write(int val)
    {
        elements = val;
    }

}




 Here is my code for Test

class Test{
    public static void main(String[] args)
    {

        int size = 100;
        Memory mymem;
        mymem = new Memory(size);
        mymem.write(98,44);
        mymem.write(96,7);
        MemEl x;
        x = mymem.read(98);
        System.out.println(mymem);
        mymem.dump();
        }
}
+1  A: 

You are declaring x as an integer, but the value you are assigning to it is of type MemEl.

You need to change your declaration of x to MemEl x;.

deyur
This is not the cause of what he was asking about, but it's probably the very next problem he would have run into.
MatrixFrog
Ok ya duh thanks I fixed it.
user258875
+1  A: 
javac Memory.java
./MemEl.java:6: missing method body, or declare abstract
public Memory MemEl();

You're accidentally ending a method before the actual code (aka body) of the method. On line 6, remove the semi-colon at the end. Your method is

public Memory MemEl();
{
    elements = 0;
}

but should be

public Memory MemEl()
{
    elements = 0;
}
Harold L
Thanks I fixed it.
user258875
A: 

./MemEl.java:6: missing method body, or declare abstract public Memory MemEl();

The compiler error tells you something is wrong with line 6 of MemEl.java.

Particularly, it complains about a missing method body. A method body is the implementation of the method, i.e. the stuff between { and }

The compiler wonders whether you have forgotten the method body, or whether your method shouldn't have a body due to being abstract.

The compiler does not find the method body, because the superfluous semicolon on line 6 ends the method declaration, making the compiler read no further for the method body. That semicolon indeed has no business being there, and removing it should get rid of this compilation problem.

meriton
A: 
public Memory MemEl()
{
    elements = 0;
}

MemEl.java:9: missing return statement

You probably meant that code to be a constructor, but constructors don't have a return type. Now what you have there is a method declaring a return type Memory, but lacking a return statement.

Michael Borgwardt
ok so what I need to do is take the Memory out...right?
user258875