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开发者_Go百科 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();
}
}
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;
}
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;
.
./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.
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.
精彩评论