所以确切的措辞是, “编写一个私有方法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;
}
答案 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)
就像你可以调用任何常规方法一样,只要私有方法对公共方法可见。