Удаление пробелов в конце - PullRequest
2 голосов
/ 06 апреля 2020

Мне нужно написать метод Java, который будет возвращать следующее в виде строки:

Пример: evens (5); Строка, возвращаемая методом: «0 2 4»

Пример: четные (8); Строка, возвращаемая методом: «0 2 4 6 8»

Пример: четные (-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; 
    }
}

Ответы [ 5 ]

0 голосов
/ 06 апреля 2020

Вы можете использовать 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());

}
0 голосов
/ 06 апреля 2020

Вам не нужно добавлять пробел после четного числа, вы можете просто поставить пробел перед ними, чтобы вам не приходилось беспокоиться о конечных пробелах.

  1. Сначала нужно установите ваш ответ по умолчанию равным 0, так что если for-loop не будет выполнен, он вернет 0.
  2. Если значение аргумента метода меньше 0, просто верните НЕТ
  3. Если оба не выполняются, это означает, что у вас есть действительный диапазон, то это основа c for-loop logi c

    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 голосов
/ 06 апреля 2020

Чтобы удалить конечные пробелы, вам нужно вызвать метод с окончательным значением num. Если у вас возникли проблемы, это может быть связано с тем, что вы обрезали go и теряли промежутки между ними. Это то, что вы должны изменить в своем операторе возврата:

return num.stripTrailing();

В классе String есть несколько методов, которые обрабатывают стандартную функциональность типа усечения. Стоит ознакомиться с Java документами, вот строка в Java 11

В качестве альтернативы вы можете собрать все четные числа в массиве, а затем использовать String. join () для построения последней возвращаемой строки.

0 голосов
/ 06 апреля 2020

Более элегантно, чем убрать последний пробел - не добавлять его в первую очередь. Просто проверьте, находитесь ли вы на последней итерации l oop и, если это так, не добавляйте разделитель.

for (int i = 0; i <= a; i += 2) 
{
    if(i < a - 1)
        num += i + " ";
    else
        num += i;
}

Другой распространенный прием - добавить разделитель только на первую n-1 итерации, затем просто выведите окончательное значение без разделителя, избавляя от необходимости проверки в l oop.

int i;
for (i = 0; i < a - 1; i += 2) 
{
    num += i + " ";
}
num += i;

Обратите внимание, как мы должны объявить переменную l oop i вне оператора for, чтобы сделать его видимым.

Наконец, вы можете рассмотреть возможность использования StringBuffer.

0 голосов
/ 06 апреля 2020

Не уверен, какой язык вы используете. Похоже Java (c#?). Строковые классы обычно имеют метод trim() или strip(), который удаляет начальные и конечные пробелы.

Если вы используете c#, рассмотрите возможность использования string.join() и Enumerable.Range()

...