2010-02-03 3 views
0

Ok, donc j'ai un paquet pour un système de mémoire ... J'ai mémoire de classe, MemEl et Test .... J'ai besoin d'aide pour éditer mon code .. Je ne peux pas comprendre ce qui ne va pas. Donc si vous pouviez me donner des pointeurs ou m'aider à éditer mon code, ce serait très utile ... Merci ... aussi pour mon MemEl j'essaye de faire un constructeur pour MemEl (Int), MemEl (long), et MemEl (String) ... J'ai MemEl(), MemEl (octet) et MemEl (short) done .... puis-je faire l'Int et Long de la même manière que le short et l'octet?Aide de l'édition de code Java

En ce moment, quand je tente de compiler la mémoire ou Memel je reçois l'erreur

javac MemEl.java
MemEl.java:9: déclaration de retour manquant
}
^
de MemEl.java:13 : déclaration de retour manquant
}
^
de MemEl.java:17: déclaration de retour manquant
}
^

Alors, comment puis-je résoudre ce problème? Tout ce que je fais est d'essayer de faire des constructeurs qui convertissent les ints en octets et ints en shorts et ainsi de suite donc je suis un peu confus au sujet de cette erreur.

Voici mon code pour 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

Il semble que vous ayez modifié votre question pour résoudre le problème signalé. Il serait utile que vous ajoutiez un commentaire à la réponse de deyur, indiquant que vous avez fait le correctif. – MatrixFrog

+4

Brian, pensez-vous que vous apprendrez à coder en demandant à d'autres personnes de résoudre vos problèmes de compilation? Je doute beaucoup que cela fonctionne ... – meriton

Répondre

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

Vous terminez accidentellement une méthode avant le code réel (corps de la méthode). Sur la ligne 6, retirez le point-virgule à la fin. Votre méthode est

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

mais devrait être

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

Merci, je l'ai réparé. –

1

Vous déclarez x comme un entier, mais la valeur que vous assignez à elle est de type Memel. Vous devez changer votre déclaration de x en MemEl x;.

+0

Ce n'est pas la cause de ce qu'il demandait, mais c'est probablement le prochain problème qu'il aurait rencontré. – MatrixFrog

+0

Ok ya duh merci je l'ai réparé. –

0

./MemEl.java:6: corps de la méthode manquante, ou déclarer la mémoire abstraite publique Memel();

L'erreur du compilateur vous indique que quelque chose ne va pas avec la ligne 6 de MemEl.java.

En particulier, il se plaint d'un corps de méthode manquant. Un corps de méthode est la mise en oeuvre de la méthode, à savoir la substance entre { et }

Le compilateur se demande si vous avez oublié le corps de la méthode, ou si votre méthode ne doit pas avoir un corps en raison d'être abstract.

Le compilateur ne trouve pas le corps de la méthode, car le point-virgule superflue de la ligne 6 termine la déclaration de la méthode, ce qui empêche la lecture du compilateur pour le corps de la méthode. Ce point-virgule n'a en effet aucune affaire à traiter, et le supprimer devrait éliminer ce problème de compilation.

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

MemEl.java:9: déclaration de retour manquant

Vous avez probablement signifié que le code pour être un constructeur, mais les constructeurs n'ont pas un type de retour. Maintenant, ce que vous avez là est une méthode déclarant un type de retour Memory, mais manquant d'une déclaration de retour.

+0

ok donc ce que je dois faire est de sortir la mémoire ... pas vrai? –