删除结尾处的空格

问题描述 投票:2回答:5

我必须编写一个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 whitespace removing-whitespace
5个回答
0
投票

不确定您使用的是哪种语言。看起来像Java(c#?)。字符串类通常具有trim()strip()方法,该方法将删除前导和尾随空格。

如果使用c#,请考虑使用string.join()Enumerable.Range()


0
投票

要删除结尾的空格,您需要在num的最终值上调用该方法。如果遇到问题,可能是因为您在进行修整时失去了它们之间的空间。这就是您应该将return语句更改为的形式。

return num.stripTrailing();

String类中有一些方法可以处理标准修剪类型功能。值得熟悉Java文档,这里的String in Java 11

或者,您可能希望将所有偶数收集到一个数组中,然后使用String.join()构建最终返回的字符串。


0
投票

比删除最后一个空格更优雅的是不要首先添加它。只要检查您是否在循环的最后一次迭代中,如果不这样做,就不要添加定界符。

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


0
投票

您不必在偶数之后添加空格,只需在它们之前添加一个空格,这样就不必担心尾随空格。

  1. 首先是将您的默认答案设置为0,这样,如果不执行for-loop,它将返回0。
  2. 如果方法参数的值小于0,只需返回NONE
  3. 如果两个都没有执行,则意味着您有一个有效范围,那么它是基本的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));
    }
    

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());

}
© www.soinside.com 2019 - 2024. All rights reserved.