不确定我是否正确编写返回true或false的方法

时间:2016-11-02 15:12:17

标签: java methods boolean

因此,对于家庭作业,我的任务是编写包含5种静态方法的代码。其中两人要求如下:
"编写一个以整数X作为参数的方法,如果X是偶数则返回true,如果X是奇数则返回false。"

"编写一个以正整数N作为参数的方法,如果N为素数则返回true,否则返回false。假设N> 1"。
我写了他们的代码

public class MethodSignature {

public static boolean evenCheck(int x){
    if(x % 2 == 0){
        return true;
    }
    else{
        return false;
    }
}

public static boolean primeCheck(int N){
    for(int i=2;i<N;i++){
        if(N % i == 0){
            return false;
        }
    }
    return true;
}

public static void main(String [] args){
    int x = 3;
    int N = 5;
    System.out.println(evenCheck(x));
    System.out.println(primeCheck(N));
    }
}  

我不清楚我是否需​​要打印出真或假的方法。在我将println添加到方法调用之前,显然他们没有打印。所以我想我有两个问题:布尔方法是否必须打印true / false才能返回true false?如果我被要求专门做到这一点,我是以最简单/最有效的方式做到的吗?还是有什么我想念的?

非常感谢你们 d

4 个答案:

答案 0 :(得分:0)

回答你的问题

  

:布尔方法是否必须打印true / false才能返回true false?

没有。情况永远不会如此,也不会发生。但你是对的,一个声明返回类型的方法,它必须在正文中返回相同的类型。

e.g。

public boolean getBooleanValue(); // has to return a boolean   
public void getBooleanValue; // does not return anything, but has a misleading methodname

在这两种方法中,您仍然可以打印任何内容。两者都没有任何关系。

答案 1 :(得分:0)

这里要提到的一点是命名很重要。让我通过快速重写一些代码来告诉你我的意思:

public static boolean isEven(int x){
  if(x % 2 == 0){
    return true;
  }
  return false;
}

重点是:该方法名称已经表明该方法将告诉您提供的参数是否为

但回到你的问题:如果某个方法执行某种日志记录跟踪的事实是正交,那么该方法是什么实际上在做。含义:上面的 isEven 方法可以告诉你数字是否是偶数。如果认为此方法也打印某些/某处有用,那么您只需将此类代码添加到您的方法中即可。

换句话说:我们无法告诉您哪种打印陈述会对您有所帮助!因此 - 您的代码,您的决定。

从“现实世界”的角度来看事物时,一方面这些跟踪陈述是必不可少的;但另一方面,人们也会进行很多好的单元测试,以帮助快速调试问题;因此,这种痕迹印刷品不是“必须拥有的”!

答案 2 :(得分:0)

印刷和退货是两种不相关的事情。 打印用于通知用户某事;

public static boolean evenCheck(int x){
    if(x % 2 == 0){
        System.out.println(x + " is even");
        return true;
    } else {
        System.out.println(x + " is odd");
        return false;
    }
}

我修改了你的evenCheck()方法,以告知用户x是偶数还是奇数。打印输出不是强制性的,如果删除它不会以任何方式影响代码,纯粹用于通知目的

因为您使用返回类型boolean - public static boolean evenCheck(int x)定义了该方法,所以这要求您必须包含返回值true或false

答案 3 :(得分:0)

该assignement指定方法返回bool,因此您不需要打印值。

您可以用更短的方式写下evenCheck方法:

public static boolean evenCheck(int x){
    return (x % 2 == 0);
}

操作%和零的结果之间的比较已经是bool,不需要添加if / else语句。
您现在返回比较结果。

primeCheck方法很好,但您可以添加一些改变计算的性能

public static boolean primeCheck(int N)
{
    int middle = (int) Math.sqrt(N) + 1;
    for (int i = 3 ; i <= middle ; i=i+2)
    {
        if (N % i == 0)
        {
            return false;
        }
    }
    return true;
}
  • Number 2始终为prime(ergo始终为true),您可以从3开始for循环。
  • 您正在检查half+1 N的素数,half+1之后无需检查所有号码。