如何编写一个私有方法,为某些参数返回True?

时间:2011-11-01 02:28:54

标签: java methods boolean private-methods

所以确切的措辞是, “编写一个私有方法isValid(aRating),如果给定的评级有效,则返回true,即1-10之间。”

private void isValid(aRating)
{

}

如果给定的评级有效,上述方法中的内容是为了返回真值,有效性意味着数字1-10。

这就是我所尝试的,教练想要它“正确的方式”这只是我尝试的一个例子,它完全是一个不同的程序。(如果混淆忽略)。

private void isValid(int hour,  int minute) 
{
    if (hour >= 0 && hour <=23) 
    {
        System.out.println("Hour is valid");
        hourIsValid = true;
    } 

    else 
    {
        System.out.println("Hour is not valid");
        hourIsValid = false;
        System.exit(0);
    }
}

这是否正确

    private boolean isValid(int aRating)
{                     
     if (aRating >= 1 && aRating <= 10)
         return true;
     else
         return false;
}

3 个答案:

答案 0 :(得分:3)

问题需要一个在某些条件下返回true的函数,因此签名不能是

private void isValid(int aRating) {}

它需要一个返回类型。现在,true的类型是布尔值,所以将其设为

private boolean isValid(int aRating) {
    return /* validity test here */;
}

答案 1 :(得分:2)

调用私有方法

从公共方法调用私有方法与调用任何其他方法完全相同:

public void doStuff() {
    System.out.println("Stuff done.");
}

private void doOtherStuff() {
    System.out.println("Other stuff done.");
}

public void showHowItWorks() {
    doStuff();
    doOtherStuff();

    // or if you prefer this style:
    this.doStuff();
    this.doOtherStuff();
}

重要的区别在于,您只能从定义它们的类中调用私有方法:

class PublicExample {
    public static void doStuff() {
        System.out.println("Stuff done.");
    }
}

class PrivateExample {
    private static void doStuff() {
        System.out.println("Stuff done.");
    }
}

class Example {
    public static void Main(String[] args) {
        PublicExample.doStuff(); // Works
        PrivateExample.doStuff(); // Doesn't work (because it's private and defined in a different class)
    }
}

返回值

private void isValid(int hour,  int minute) {
    if (hour >= 0 && hour <=23) {
        System.out.println("Hour is valid");
        hourIsValid = true;
    } else {
        System.out.println("Hour is not valid");
        hourIsValid = false;
        System.exit(0);
    }
}

这种方法的问题在于,如果您输入了不好的小时或分钟,您的程序会立即死亡。如果我想循环直到得到一个好的输入怎么办?

我认为主要问题是你不知道如何return a value from a method。以下是始终返回true的函数示例:

public static boolean trueExample() {
    return true;
}

public static void main(String[] args) {
    boolean returnValue = trueExample();
    System.out.println("trueExample() returned " + returnValue);
}

你也可以把它变得更复杂:

/**
 * @return the input value minus one.
 */
public static int oneLess(int num) {
    return num - 1;
}

public static void main(String[] args) {
    int num = 10;

    // Print 10
    System.out.println(num);

    // Print 9
    num = oneLess(num);
    System.out.println(num);

    // Print 8
    num = oneLess(num);
    System.out.println(num);
}

如果true在10-20范围内,则会返回num,否则会返回false

public boolean isValid(int num) {
    return num >= 10 && num <= 20;
}

这个版本完全相同的东西,但你可能会发现它更容易阅读,因为它更明确:

public boolean isValid(int num) {
    /* Numbers less than 10 are invalid */
    if(num < 10) {
        return false;
    }
    /* Numbers greater than 20 are invalid */
    else if (num > 20) {
        return false;
    }
    /* By process of elimination, everything else is valid */
    else {
        return true;
    }
}

如果这还不足以帮助解决您的问题,请告诉我。

答案 2 :(得分:0)

就像你可以调用任何常规方法一样,只要私有方法对公共方法可见。