我有两个班级。
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 :(得分: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();
}