2
votes

Programme de bouclage utilisant une méthode booléenne en Java

J'ai deux classes.

public class FractionDemo{
  public static void main (String[]argv) {
    Fraction f1 = new Fraction();
    Fraction f2 = new Fraction();
    f1.inputValues();
    f2.inputValues();

    while(f1.isZero())
    {
      f1.inputValues();
      f2.inputValues();
    }

  }
}

Je veux que mon programme arrête de boucler une fois que la valeur du numérateur est 0. et j'ai fait une erreur stupide quelque part mais je n'arrive pas à la voir ou comprendre pourquoi. Merci d'avance et très apprécié.

import java.util.Scanner;
public class Fraction
{
  private int numerator;
  private int denominator;

  public void inputValues()
  {
    Scanner kb = new Scanner(System.in);
    System.out.println("Enter your numerator: ");
    numerator = kb.nextInt();
    System.out.println("Enter your denominator: ");
    denominator = kb.nextInt();                   
  }

  public int getNumerator()            //GetMethod
  {return numerator;}


  public boolean isZero()
  {
    if (getNumerator ==0)
    return false;
  }
}


3 commentaires

Voulez-vous que le programme s'arrête lorsque soit le numérateur ou le dénominateur est 0? Aussi pourquoi créez-vous 2 objets de Fraction ?


Eh bien seul numérateur pour l'instant. Je crée 2 objets de Fraction car je veux que l'utilisateur entre 2 fractions dans mon programme pour ajouter, multiplier, diviser, etc. Mais pour l'instant, je ne peux même pas le faire en boucle jusqu'à ce qu'un 0 soit entré.


J'ai inclus une réponse, j'espère que cela vous aidera.


3 Réponses :


0
votes

Tout d'abord, votre code ne se compilera pas. Les méthodes qui renvoient une valeur doivent le faire dans tous les cas. Votre méthode isZero () ne renvoie pas true alors qu'elle le devrait. Modifiez-le comme suit:

public boolean isZero()
{
   if (getNumerator() == 0)
      return false;
   else 
      return true;
} 


0 commentaires

1
votes

Tout d'abord, votre code ne se compile pas. Vous devez renvoyer une valeur lorsque la condition if est évaluée à false, ajoutez la condition else à votre isZero()

public static void main(String[] argv) {
    Fraction f1 = new Fraction();
    f1.inputValues();

    while (f1.isZero()) {
        f1.inputValues();
    }

}


0 commentaires

0
votes

Vous devriez probablement changer votre booléen

 while (!f1.isZero()) {
        f1.inputValues();
 }

de manière syntaxique, si vous voulez que la boucle continue tandis que (true) changez-le en

public boolean isZero() {

    if (getNumerator() == 0) {     //if is zero, return true, else, return false
        return true;
    } 
    return false;               //booleans default to false so you should return true when necessary
}


0 commentaires