0

因此,确切的措辞是,“编写一个私有方法 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;
}
4

3 回答 3

3

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

private void isValid(int aRating) {}

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

private boolean isValid(int aRating) {
    return /* validity test here */;
}
于 2011-11-01T02:42:54.913 回答
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);
    }
}

这种方法的问题是,如果您输入错误的小时或分钟,您的程序会立即终止。如果我想循环直到我得到一个好的输入怎么办?

我认为主要问题是您不知道如何从方法返回值。这是一个始终返回的函数示例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如果num在 10-20 范围内,则返回一个,否则返回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;
    }
}

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

于 2011-11-01T02:35:36.937 回答
0

就像您调用任何普通方法一样,只要私有方法对公共方法可见。

于 2011-11-01T02:34:28.923 回答