调用另一个方法来填充数组
Calling a method in another to populate an array
首先我想说,我编码已经有几年了,所以我的知识有点不稳定。我正在寻找一些帮助,基本上是朝着正确方向的推动。
我的任务是完成 FizzBuzz 游戏变体的程序,规则是:
输入 1-9 中的 2 位数字、一个 Fizz 号码和一个蜂鸣号码(例如:2 7 )
- 如果 n 可被 fizzNumber 整除,或包含数字 fizzNumber,return "fizz"
- 如果 n 能被 buzzNumber 整除,或包含数字 buzzNumber,return "buzz"
- 但是,如果以上两个条件都成立,则必须return"fizzbuzz"
- 如果none以上条件成立,return数字本身。
所以我把那部分记下来了,我的代码如下,编译正确。
public String getValue(int n) {
boolean fz = false; //fz will symbolize fizz in my logic
boolean bz = false; //bz will symbolize buzz in my logic
//if n is divisible by fizzNumber, or contains the digit fizzNumber, return "fizz"
if(n % fizzNumber == 0 || Integer.toString(n).contains(Integer.toString(fizzNumber)))
fz = true;
//if n is divisible by buzzNumber, or contains the digit buzzNumber, return "buzz"
if(n % buzzNumber == 0 || Integer.toString(n).contains(Integer.toString(buzzNumber))) //Check for buzz
bz = true;
//if both the above conditions are true, you must return "fizzbuzz"
if (fz == true && bz == true)
return("fizzbuzz");
//return fizz
else if (fz == true)
return("fizz");
//return buzz
else if(bz == true)
return("buzz");
// return the number itself as a String
else
return Integer.toString(n);
}
现在我的下一个目标是实施 getValues()
方法,以 return 给定整数范围的 fizzbuzz 值数组。此方法应在内部调用 getValue()
方法来计算单个整数的 fizzbuzz 值,并将其存储到最后要 returned 的数组中。
public String[] getValues(int start, int end) {
}
例如,如果 fizz 数是 3,buzz 数是 4,getValues(2,7) 应该 return 一个字符串数组:
{"2", "fizz", "buzz", "5", "fizz", 7}
我正在考虑使用类似这样的 for 循环来做到这一点
for(start = 0; end >= start; start ++){
}
但我真的不知道如何在循环中实现 getValue 方法并将其存储在数组中。
有人能帮我吗?
这应该会给您想要的结果。你要先做组合条件,否则永远达不到。如果数字可以被两者整除,并且首先到达其他语句之一,它将始终评估为真并且永远不会达到组合条件,除非它是第一个。
public String[] getValues(int start, int end) {
List<String> vals = new ArrayList<>();
for (int i = start; i <= end; i++) {
if (i % (fizzNumber * buzzNumber) == 0) vals.add("fizzbuzz");
else if (i % fizzNumber == 0) vals.add("fizz");
else if (i % buzzNumber == 0) vals.add("buzz");
else vals.add(i.toString());
}
return vals.toArray();
}
int fizzNumber = 3;
int buzzNumber = 5;
String[] arr = getValues(10, 20);
// ["buzz", "11", "fizz", "13", "14", "fizzbuzz", "16", "17", "fizz", "19", "buzz"]
你的作业快完成了!该函数在下面带有注释。
public String[] getValues(int start, int end) {
// create the storage list
List<String> words = new ArrayList<String>();
for(int i=start; i<=end; i++){
// append the string to the list
words.add(getValue(i));
}
//return the stored words as String[]
return words.toArray();
}
public String[] getValues(int start, int end) {
List<String> valueList = new ArrayList<>();
for (int i = start; i <= end; i++) {
valueList.add(getValue(i));
}
String[] valueArr = new String[valueList.size()];
valueArr = valueList.toArray(valueArr);
return valueArr;
}
首先我想说,我编码已经有几年了,所以我的知识有点不稳定。我正在寻找一些帮助,基本上是朝着正确方向的推动。 我的任务是完成 FizzBuzz 游戏变体的程序,规则是: 输入 1-9 中的 2 位数字、一个 Fizz 号码和一个蜂鸣号码(例如:2 7 )
- 如果 n 可被 fizzNumber 整除,或包含数字 fizzNumber,return "fizz"
- 如果 n 能被 buzzNumber 整除,或包含数字 buzzNumber,return "buzz"
- 但是,如果以上两个条件都成立,则必须return"fizzbuzz"
- 如果none以上条件成立,return数字本身。
所以我把那部分记下来了,我的代码如下,编译正确。
public String getValue(int n) {
boolean fz = false; //fz will symbolize fizz in my logic
boolean bz = false; //bz will symbolize buzz in my logic
//if n is divisible by fizzNumber, or contains the digit fizzNumber, return "fizz"
if(n % fizzNumber == 0 || Integer.toString(n).contains(Integer.toString(fizzNumber)))
fz = true;
//if n is divisible by buzzNumber, or contains the digit buzzNumber, return "buzz"
if(n % buzzNumber == 0 || Integer.toString(n).contains(Integer.toString(buzzNumber))) //Check for buzz
bz = true;
//if both the above conditions are true, you must return "fizzbuzz"
if (fz == true && bz == true)
return("fizzbuzz");
//return fizz
else if (fz == true)
return("fizz");
//return buzz
else if(bz == true)
return("buzz");
// return the number itself as a String
else
return Integer.toString(n);
}
现在我的下一个目标是实施 getValues()
方法,以 return 给定整数范围的 fizzbuzz 值数组。此方法应在内部调用 getValue()
方法来计算单个整数的 fizzbuzz 值,并将其存储到最后要 returned 的数组中。
public String[] getValues(int start, int end) {
}
例如,如果 fizz 数是 3,buzz 数是 4,getValues(2,7) 应该 return 一个字符串数组:
{"2", "fizz", "buzz", "5", "fizz", 7}
我正在考虑使用类似这样的 for 循环来做到这一点
for(start = 0; end >= start; start ++){
}
但我真的不知道如何在循环中实现 getValue 方法并将其存储在数组中。
有人能帮我吗?
这应该会给您想要的结果。你要先做组合条件,否则永远达不到。如果数字可以被两者整除,并且首先到达其他语句之一,它将始终评估为真并且永远不会达到组合条件,除非它是第一个。
public String[] getValues(int start, int end) {
List<String> vals = new ArrayList<>();
for (int i = start; i <= end; i++) {
if (i % (fizzNumber * buzzNumber) == 0) vals.add("fizzbuzz");
else if (i % fizzNumber == 0) vals.add("fizz");
else if (i % buzzNumber == 0) vals.add("buzz");
else vals.add(i.toString());
}
return vals.toArray();
}
int fizzNumber = 3;
int buzzNumber = 5;
String[] arr = getValues(10, 20);
// ["buzz", "11", "fizz", "13", "14", "fizzbuzz", "16", "17", "fizz", "19", "buzz"]
你的作业快完成了!该函数在下面带有注释。
public String[] getValues(int start, int end) {
// create the storage list
List<String> words = new ArrayList<String>();
for(int i=start; i<=end; i++){
// append the string to the list
words.add(getValue(i));
}
//return the stored words as String[]
return words.toArray();
}
public String[] getValues(int start, int end) {
List<String> valueList = new ArrayList<>();
for (int i = start; i <= end; i++) {
valueList.add(getValue(i));
}
String[] valueArr = new String[valueList.size()];
valueArr = valueList.toArray(valueArr);
return valueArr;
}