2011-11-29 4 views
-4

J'ai le problème suivant à résoudre dans java: Implémenter la classe Alkio. Testez avec un programme principal fait AlkioPaa.java avec lequel vous voyez que votre classe fonctionne. Ma réponse à cette question suit:Comment implémenter la classe Alkio?

/** 
* @author A. 
* @version 28.11.2011 
* Tehtävä5. Ohjelma Toteuttaa luokan Alkio */ 

public class Alkio { 
    private int rivi; 
    private int sarake; 
    private int arvo; 


    public Alkio(int rivi, int sarake, int arvo){ 
    int Rivi= rivi; 
    int Sarake=sarake; 
    int Arvo=arvo; 
    } 

    public void setAlkio(int rivi, int sarake, int arvo){ 
    System.out.println("("+rivi+","+sarake+","+arvo+")"); 
    } 

    public int getArvo(){ 
    return arvo; 
    } 

    public int getRivi(){ 
    return rivi; 
    } 

    public int getSarake(){ 
    return sarake; 
    } 

    //jotain häikkää seuraavassa(28.11.2011). Häikkä poistunut(29.11.2011) 
    public String toString(){ 
    String merkkijono= new String(); 
    return merkkijono; 
    } 
} 

Y a-t-il des commentaires? Ensuite test est effectué avec le programme principal AlkioPaa.java qui suit:

public class AlkioPaa { 

    public static void main(String[] args) { 

    Alkio eka = new Alkio(1,2,10); 

    System.out.println("Tein alkion, jonka rivi on " + eka.getRivi() 
     + " ja sarake on " + eka.getSarake() + ". Arvo on " + eka.getArvo()); 


    System.out.println("\n alkio on " + eka.toString()); 

    String apu = eka.toString(); 

    System.out.println("alkio " + apu); 

    eka.setAlkio(2, 5, 12); 

    System.out.println("Muutettu alkio " + eka); 
    } 
} 

Quand je lance-programme principal, il imprime:

Tein alkion, jonka rivi on 0 ja sarake on 0. Arvo on 0 

Alkio sur Alkio (2,5,12) Muutettu alkio Il ne s'imprime donc pas (1,2,10) comme il se doit.

+3

S'il vous plaît formater votre code correctement la prochaine fois. – MByD

+2

S'il vous plaît marquer les devoirs en tant que tels! Le code que vous avez collé a même le numéro d'affectation à gauche: P – Zavior

+1

En plus de ce que MByD a commenté dans sa réponse, je voudrais aussi souligner qu'il est très peu intuitif d'avoir une fonction 'setAlkio' qui ne définit pas" Alkio ", mais imprime simplement les paramètres qu'il reçoit. – flesk

Répondre

3

Pourquoi attendez-vous l'impression (1,2,10)?

  1. Vous réinitialisez les valeurs à 2,5, 12 (eka.setAlkio(2, 5, 12);). (Bien que, comme commenté à la question par @flesk, vous ne les mettez en fait ...)
  2. vous n'avez pas modifié la méthode toString que vous devriez avoir:

    public String toString(){ 
        return "("+rivi+","+sarake+","+arvo+")"; 
    } 
    
  3. Dans votre constructeur, vous ne définissez pas les membres de la classe aux paramètres donnés, parce que vous les cachez dans la méthode, le constructeur doit être:

    public Alkio(int rivi, int sarake, int arvo){ 
        this.rivi= rivi; 
        this.sarake=sarake; 
        this.arvo=arvo; 
    } 
    
+0

Pourquoi c'est cela et pas d'autres, par ex. cette? Et pourquoi avez-vous mis this.rivi = rivi; this.sarake = rivi; this.arvo = rivi; et non int Rivi = rivi; int Sarake = saraké; int Arvo = arvo ;? – alvoutila

+0

@alvoutila: 'this' est un mot-clé réservé et fait référence à l'objet courant. C'est quand vous utilisez 'this.rivi = rivi' dans votre constructeur que vous dites que la variable d'objet' rivi' devrait prendre comme argument la valeur de 'rivi' passée dans le constructeur. Notez qu'il s'agit de deux variables différentes.Quand vous écrivez 'int Rivi = rivi' vous déclarez une troisième variable qui est locale au constructeur et qui brise les conventions de nommage java d'un seul coup. – flesk

+0

Comment importez-vous cette classe Alkio dans une classe (par exemple, classe publique T6 {...)? importer Alkio ;? – alvoutila

Questions connexes