Справка по редактированию кода Java - PullRequest
0 голосов
/ 04 февраля 2010

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

Rightтеперь, когда я пытаюсь скомпилировать Memory или MemEl, я получаю сообщение об ошибке

javac MemEl.java
MemEl.java:9: пропущенное выражение возврата
}
^
MemEl.java:13: пропущенный оператор возврата
}
^
MemEl.java:17: пропущенный оператор возврата
}
^

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

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

Ответы [ 4 ]

1 голос
/ 04 февраля 2010
javac Memory.java
./MemEl.java:6: missing method body, or declare abstract
public Memory MemEl();

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

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

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

public Memory MemEl()
{
    elements = 0;
}
1 голос
/ 04 февраля 2010

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

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

0 голосов
/ 04 февраля 2010
public Memory MemEl()
{
    elements = 0;
}

MemEl.java: 9: отсутствует оператор возврата

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

0 голосов
/ 04 февраля 2010

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...