【问题标题】:Looping program using a boolean method in Java在Java中使用布尔方法循环程序
【发布时间】:2019-07-03 23:19:46
【问题描述】:

我有两节课。

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

  }
}

【问题讨论】:

  • 您希望程序在任一分子或分母为0时停止吗?另外你为什么要创建 Fraction 的 2 个对象?
  • 现在只有分子。我正在创建 2 个 Fraction 对象,因为我希望用户在我的程序中输入 2 个分数以进行加法、乘法、除法等。但是现在,我什至无法让它循环,直到输入 0。
  • 我已经提供了一个答案,希望对您有所帮助。

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


【解决方案1】:

首先,您的代码无法编译。当 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】:

    你应该改变你的布尔值

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-09-12
        • 1970-01-01
        • 2017-07-28
        • 2023-03-19
        • 2016-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多