2014-02-21 24 views
-3

我相信我正在做这件事,但是我的分数类中的ImproperFraction方法正常输出时遇到了问题。它只是输出干枯或不分数是不恰当的,不一定是特别的。在Java中使用不正确的分数输出时出现问题

public boolean ImproperFraction(Fraction otherObject1){ 

    if(numerator > denominator) { 

      System.out.println("Your fraction is improper and cannot be reduced"); 
      Fraction otherFraction = (Fraction)otherObject1; 
      return ((numerator == otherFraction.numerator) && 
      (denominator == otherFraction.denominator)); 
     } 

    else if(numerator <= denominator) { 
     System.out.println("Your fraction is proper and has been reduced"); 
     return false; 
     } 

    else { 
     return false; 
    }  
    } 

在主类:

System.out.println(ImproperFraction); 

,它做的是返回false,即使我把它的分数是不正确的唯一的事。谢谢你的帮助!

+2

分子和分母从哪里来? – panoptical

+0

你为什么要比较一个法定编号与另一个分数来确定它是否不正确?应该比较正在测试的分数的分子和分母。 – anonymous

+0

这是'Fraction'类中的方法吗?如果是这样,就不需要再通过第二部分,来测试第一部分是否不合适。也许你应该抛弃'otherObject1',并在'if'块中打印消息后返回'true'。 –

回答

0

那么,现在你已经显示了你的整个代码 - 看起来你实际上并没有在任何地方调用ImproperFraction方法。

你有一个静态布尔变量,称为ImproperFraction,你从来没有真正设置过,所以它总是假的。在行System.out.println(ImproperFraction)中,您正在打印该变量。但是你永远不会调用ImproperFraction方法,所以你在实际问题中发布的代码(不是pastebin)永远不会运行。

0

你的问题是,你如果分子和当前Fraction(在this对象)的分母等于您在通过分数的分子和分母仅会返回true。这第一块应该只是说

if (numerator >= denominator) { 
    System.out.println("This fraction is improper"); 
    return true; 
} 

而不用担心比较分子和分母与otherObject1

事实上,你应该根本就不用在otherObject1中传球。你不需要它。