Циклическая программа с использованием логического метода в Java - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть два класса.

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;
  }
}

Я хочу, чтобы моя программа прекратила зацикливание, когда значение для числителя равно 0. И я где-то допустил глупую ошибку, но, похоже, я не вижу ее или фигурупочему.Большое спасибо заранее и высоко ценится.

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();
    }

  }
}

Ответы [ 3 ]

0 голосов
/ 10 февраля 2019

Ну, во-первых, ваш код не компилируется.Вам необходимо вернуть значение, когда условие if оценивает как ложное, добавить условие else к вашему isZero()

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

Или более чистым способом, используятроичный оператор:

public boolean isZero() {
   return getNumerator() == 0 ? false: true;
}

Теперь вам нужен только один объект класса Fraction

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

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

}

Теперь ваша программа остановится после того, как пользователь введет 0 в качестве числителя.

0 голосов
/ 10 февраля 2019

Вам, вероятно, следует изменить логическое значение

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
}

Синтаксически, если вы хотите, чтобы цикл продолжался while(true), измените его на

 while (!f1.isZero()) {
        f1.inputValues();
 }
0 голосов
/ 10 февраля 2019

Прежде всего, ваш код не будет компилироваться.Методы, которые возвращают значение, должны делать это во всех случаях.Ваш метод isZero () не возвращает true, когда должен.Измените его следующим образом:

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