在Java中使用布尔方法循环程序

时间:2019-02-10 06:43:56

标签: java while-loop boolean java.util.scanner

我有两个班级。

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 :(得分:0)

首先,您的代码将无法编译。在所有情况下,返回值的方法都必须这样做。 您的isZero()方法在应有的情况下不会返回true。修改为以下内容:

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

答案 1 :(得分:0)

首先,您的代码无法编译。当 if 条件评估为false时,您需要返回一个值,将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作为分子后,您的程序现在将停止。

答案 2 :(得分:0)

您可能应该更改您的布尔值

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