2010-02-03 3 views
0

Итак, у меня есть пакет для системы памяти ... У меня есть память классов, MemEl и Test .... Мне нужна помощь в редактировании моего кода ... я не могу понять, что с ним не так. Поэтому, если вы могли бы дать мне несколько указателей или помочь мне изменить свой код, это было бы очень полезно ... Спасибо ... также за мой MemEl Я пытаюсь создать конструктор для MemEl (Int), MemEl (long) и MemEl (String) ... У меня есть MemEl(), MemEl (байт) и MemEl (короткий). Могу ли я делать Int и Long так же, как короткие и байт?Справка по редактированию кода Java

Прямо сейчас, когда я пытаюсь скомпилировать памяти или Мемель я получаю ошибку

JAVAC MemEl.java
MemEl.java:9: отсутствует оператор возврата
}
^
MemEl.java:13 : отсутствует оператор возврата
}
^
MemEl.java:17: отсутствующий оператор возврата
}
^

Так как я могу это исправить? Все, что я делаю, - это сделать конструкторы, которые преобразуют ints в байты и ints в shorts и т. Д., Поэтому я немного запутался в этой ошибке.

Вот мой код 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(); 
     } 
} 
+0

Похоже, вы отредактировали свой вопрос, чтобы исправить проблему, указанную deyur. Было бы полезно, если бы вы добавили комментарий к ответу deyur, указав, что вы сделали исправление. – MatrixFrog

+4

Брайан, как вы думаете, вы узнаете, как закодировать, если другие люди решат ваши проблемы с компиляцией? Я очень сомневаюсь, что это сработает ... – meriton

ответ

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

Вы случайно закончили метод перед фактическим кодом (aka body) метода. В строке 6 удалите полуточку в конце. Ваш метод

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

, но должно быть

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

Спасибо, я исправил его. – 2010-02-04 00:08:36

1

Вы объявляете х как целое число, а значение, которое вы назначаете к нему типа Мемель.

Вам необходимо изменить объявление x на MemEl x;.

+0

Это не причина того, о чем он просил, но это, вероятно, самая следующая проблема, с которой он столкнулся бы. – MatrixFrog

+0

Хорошо, спасибо, я исправил его. – 2010-02-04 00:08:02

0

./MemEl.java:6: отсутствует тело метода, или объявить абстрактную общественной памяти Мемель();

Ошибка компилятора сообщает вам, что что-то не так с линией 6 MemEl.java.

В частности, он жалуется на отсутствие тела метода. Тело метода является реализация метода, то есть материал между { и }

Компилятор задается ли вы забыли тело метода, или ваш метод не должен иметь тело из-за того abstract.

Компилятор не находит тело метода, поскольку избыточная точка с запятой в строке 6 завершает объявление метода, что делает компилятор более нечитаемым для тела метода. Эта точка с запятой действительно не имеет никакого бизнеса, и удаление ее должно избавиться от этой проблемы компиляции.

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

MemEl.java:9: пропавшие возвращения заявления

Вы, вероятно, имел в виду, что код, чтобы быть конструктором, но конструкторы не имеют тип возвращаемого значения. Теперь у вас есть метод, объявляющий тип возвращаемого значения Memory, но без оператора возврата.

+0

ОК, так что мне нужно сделать, это взять память ... правильно? – 2010-02-04 04:14:14

Смежные вопросы