2017-02-27 4 views
-1

Nous sommes en train de créer un setter avec l'instruction if. Nous essayons de limiter les valeurs approuvées et utilisons une méthode d'impression pour imprimer la valeur qui est définie, ou "faux" si la valeur n'est pas acceptée.Il y a un problème avec l'instruction if dans notre setter

Ceci est la méthode:

Public class Sykkel extends Kjøretøy 
{ 

private int height; 


public Sykkel(String colour) 
{ 
    // initialise instance variables 
    super(1, colour); 
    this.height = height; 
} 

public void setHeight (int height) { 
    if(height > 35 && height < 70){ 
     System.out.println("Sykkelen er " + height + " cm høy."); 
    } else { 
     System.out.println("Wrong"); 
    } 
} 

public int getHeight() { 
    return height; 
} 

Peu importe ce que nous avons la hauteur il imprime « Faux ». Quelqu'un voit-il l'erreur dans le code?

nous avons essayé à la fois this.height et juste la hauteur, mais le résultat est toujours le même.

Merci d'avance.

+2

Il semble que la ligne 'this.height = height;' dans votre constructeur n'a pas beaucoup de sens - que serait 'height' dans ce contexte? Il n'y a pas de tel paramètre remis. En dehors de cela, peut-être nous montrer comment vous appelez réellement 'setHeight()'? – domsson

+0

** 1. ** Quelle est la valeur du côté droit de l'assignation 'this.height = height;'? ** 2. ** Quelle valeur est testée dans 'if (height> 35 && height <70)' - est-ce le paramètre de la fonction 'height' ou le membre' this.height'? Dans ce dernier cas, le résultat dépend fortement d'une réponse à la première question. – CiaPan

+0

Vous devrez fournir le code original, celui-ci a des erreurs de compilation évidentes, il est donc difficile de déduire ce qui pourrait être faux. L'autre chose est, est-ce le code à un seul thread ou vous utilisez un peu de multithreading? – alobodzk

Répondre

5

Mes observations.

Votre constructeur devrait être:

public Sykkel(String colour, int height) 
{ 
    // initialise instance variables 
    super(1, colour); 
    this.height = height; 
} 

Dans votre méthode setHeight, vous devez attribuer la hauteur à la variable d'instance.

public void setHeight (int height) { 
    if(height > 35 && height < 70){ 
     System.out.println("Sykkelen er " + height + " cm høy."); 
    } else { 
     System.out.println("Wrong"); 
    } 
    // add the below line: 
    this.height = height; 
} 

L'autre méthode semble bien.

Quand j'appelle setHeight(40);, je reçois

Sykkelen er 40 cm høy. 

Hope this helps!

+0

Merci beaucoup! Maintenant, cela fonctionne très bien :) – r0m1

+0

@ r0m1 alors vous devriez marquer cette réponse comme acceptée. – domsson

0

Il n'y a pas d'affectation dans la méthode setter, ajoutez juste

this.hauteur = hauteur;

public void setHeight (int height) { 
    if(height > 35 && height < 70){ 
     System.out.println("Sykkelen er " + height + " cm høy."); 
    } else { 
     System.out.println("Wrong"); 
    } 
this.height = height; 
}