【发布时间】:2018-12-25 03:29:43
【问题描述】:
制作了一个打印数字是否奇怪的程序。如果数字是奇数,那就奇怪了。如果这个数字是偶数并且包含在 2 和 5 之间,这并不奇怪。如果它是偶数且包含在 6 和 20 之间,则很奇怪,如果它是偶数且大于 20,则并不奇怪。我在这里遇到的问题是,不是输出显示“这个数字很奇怪/不奇怪”,而是在一行上得到“奇怪”或“不奇怪”,然后是“这个数字是 0”,如果它是偶数,或者“这个数字是 1”,如果它是奇数。
public Weird(int num)
{
n = num;
}
public int EvenOrOdd()
{
int check = n % 2;
int answer = n / 2;
if (check == 0 && answer >= 2 && answer <= 5)
{
System.out.println("Not Weird");
}
else if (check == 0 && answer >= 6 && answer <= 20)
{
System.out.println("Weird");
}
else if (check == 0 && answer > 20)
{
System.out.println("Not Weird");
}
else if (check != 0)
{
System.out.println("Weird");
}
return check;
}
public static void main(String[] args)
{
Weird w = new Weird(32);
Weird a = new Weird(21);
System.out.println("This number is " + w.EvenOrOdd());
System.out.println("This number is " + a.EvenOrOdd());
}
【问题讨论】:
-
您返回的是
int。您应该返回当前正在打印的String -
此外,您所描述的逻辑似乎暗示,如果一个数字大于 20,无论是偶数 还是 奇数,那么这并不奇怪。您当前的逻辑仅将大于 20 的偶数标记为不奇怪。
-
Java 中的方法应该遵循 camelCase 约定而不是 PascalCase 约定。
EvenOrOdd-->evenOrOdd -
构造一个带有“不奇怪”的参数的
Weird是——因为没有更好的词——很奇怪。