我必须编写一个Java方法,该方法将以字符串形式返回以下内容:
示例:evens(5);方法返回的字符串:“ 0 2 4”
示例:evens(8);方法返回的字符串:“ 0 2 4 6 8”
例如:evens(-5);方法返回的字符串:“ NONE”
示例:evens(0);方法返回的字符串:“ 0”
我遇到的问题是代码末尾的空白问题。如果我的代码显示了evens(5),则我的方法返回的字符串将为“ 0 2 4”,但我需要使它看起来像上面的示例。我的代码如下:
public class Evens {
public static String evens(int a) {
if (a < 0) {
return "NONE";
}
String num = "";
for (int i = 0; i <= a; i += 2) {
num += i + " ";
}
return num;
}
}
不确定您使用的是哪种语言。看起来像Java(c#?)。字符串类通常具有trim()
或strip()
方法,该方法将删除前导和尾随空格。
如果使用c#,请考虑使用string.join()
和Enumerable.Range()
要删除结尾的空格,您需要在num
的最终值上调用该方法。如果遇到问题,可能是因为您在进行修整时失去了它们之间的空间。这就是您应该将return语句更改为的形式。
return num.stripTrailing();
String类中有一些方法可以处理标准修剪类型功能。值得熟悉Java文档,这里的String in Java 11
或者,您可能希望将所有偶数收集到一个数组中,然后使用String.join()构建最终返回的字符串。
比删除最后一个空格更优雅的是不要首先添加它。只要检查您是否在循环的最后一次迭代中,如果不这样做,就不要添加定界符。
for (int i = 0; i <= a; i += 2)
{
if(i < a - 1)
num += i + " ";
else
num += i;
}
[另一个常见的技巧是仅在前一个n-1
迭代中添加一个定界符,然后仅打印不带定界符的最终值,而无需在循环中进行检查。
int i;
for (i = 0; i < a - 1; i += 2)
{
num += i + " ";
}
num += i;
注意,我们必须在i
语句之外声明循环变量for
以使其可见。
最后,您可以考虑使用StringBuffer
。
您不必在偶数之后添加空格,只需在它们之前添加一个空格,这样就不必担心尾随空格。
for-loop
,它将返回0。如果两个都没有执行,则意味着您有一个有效范围,那么它是基本的for-loop
逻辑
public static String even(int amount) {
String output = "0";
if(amount < 0) {
return "NONE";
}
else if(amount == 0) {
return output;
}
for(int i=2; i<=amount; i += 2) {
output += " " + i;
}
return output;
}
public static void main(String[] args) {
System.out.println(even(5));
System.out.println(even(8));
System.out.println(even(-5));
System.out.println(even(0));
}
您可以使用String.join获得所需的序列。您可以使用下面的代码
private static void findEvenSequences(int max) {
String exp = new String();
if (max < 0) {
exp = "NONE";
} else {
for (int i = 0; i < max; i = i + 2) {
exp = String.join(" ", exp, String.valueOf(i));
}
}
System.out.println(exp.trim());
}