我正在做一些java练习,我正在尝试创建一个计数为100的方法,并在每次for循环“循环”时打印该数字。
例外的是,当数字可被3整除时,它将打印“Fizz”,当数字可被5整除时,它将打印“Buzz”。
现在,我的方法中有三种返回类型,它将返回一个String。但是,错误说我没有返回值。我知道我必须让它在for循环之外返回一个String,但是我在弄清楚如何返回我想要的值时遇到了一些麻烦。
我也知道我可以使用数组甚至是arrayList来解决这个问题,但我认为没有它可能,我想尝试这样做。
非常感谢任何帮助!
这是代码:
package etcOvaningar;
public class ovning1 {
public static String fizz ="Fizz!";
public static String buzz ="Buzz!";
public static String countDown(){
for (int number = 0; number < 100; number++){
if (number%3 == 0){
return fizz;
}
else if (number%5 == 0){
return buzz;
}
else
return String.valueOf(number);
}
//I need to insert a return here I suppose, but I want the correct return from the if and else //statements
}
public static void main(String[] args){
}
}
答案 0 :(得分:7)
不要在循环中“返回”,而是打印。返回时,方法退出,循环不再循环。如果只是打印必要的文本,for循环将继续循环,直到达到其自然结束条件。
public static void countDown(){
for (int number = 0; number < 100; number++){
if (number % (3*5) == 0) {
System.out.println("fizzbuzz");
} else
if (number % 3 == 0){
System.out.println("fizz");
} else
if (number % 5 == 0){
System.out.println("buzz");
}
}
}
请注意,根据Martin Dinov,应声明此方法返回void
,不返回任何内容。
答案 1 :(得分:2)
您的代码将无法编译,因为方法倒计时需要在for循环下面返回值。
然而,无论你返回的值是什么,你放在for循环下都无关紧要,因为你的倒计时方法总会返回“Fizz!”
答案 2 :(得分:1)
这是做你想做的另一种方式。也许,更多你应该做的事情。
private static String fizz ="Fizz!";
private static String buzz ="Buzz!";
public static void main(String[] args){
for (int number = 0; number < 100; number++){
String word = checkNumber(number);
System.out.println(word);
}
}
private static String checkNumber(int number){
String value = "";
if (number%3 == 0){
value += fizz;
}
if (number%5 == 0){
value += buzz;
}
if (value.isEmpty()) {
value = String.valueOf(number);
}
return value;
}
注意事项:
以private
开始您的方法和字段,并在您进一步开发程序和需求变更时升级其可见性。这有助于保持代码清洁和曝光最小化。
尽量不要在方法中使用print语句(除非它们专门用于打印消息)。他们应该接受输入,处理输入并返回输出。没什么,没什么。
了解if / else if / else
和if / if / if
之间的区别。数字15可以被3和5整除。