возвращает строку из массива строк длиной, равной входному целому числу

#java #arrays #string #loops #if-statement

#java #массивы #строка #циклы #if-оператор

Вопрос:

Я пытаюсь создать метод, который вернет строку, построив предложение из eleloosp массива до j элементов. Так что, если j = 3 тогда результат будет " How about a nice " .
Я не хочу жестко кодировать операторы if, делая что-то вроде if(j == 3) then выводить эту конкретную вещь.

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

 public class TestForEachLoop
{
    private String[] eleloosp = {"How", "about", "a", "nice","tea"};

    public String getCF(int j){
        for(int i = 0; i < eleloosp.length; i  ){
            if( j == eleloosp.length){
                System.out.println();
            }
        }
    }
}
 

Комментарии:

1. Почему значение 3 должно давать возвращаемую строку с четырьмя элементами? Вы пробовали использовать StringJoiner ? И какое это имеет отношение к длине массива? Боюсь, на данный момент ваш вопрос совершенно неясен.

2. Что я пытаюсь сделать, так это создать метод, который возвращает строку, в которой будет предложение, составленное из массива eleloosp с точностью до j элементов. Я знаю, что должен использовать операторы if, но как мне взять введенное число из j и сделать его равным массиву eleloosp без жесткого кодирования чисел в операторе if.

Ответ №1:

Вы можете просто сделать это с помощью следующего кода:

 public class Main {
    static String[] eleloosp = { "How", "about", "a", "nice", "tea" };

    public static void main(String[] args) {
        System.out.println(getCF(2));
        System.out.println(getCF(3));
    }

    public static String getCF(int j) {
        String sentence = "";
        assert(j < eleloosp.length);

        for(int i = 0; i < j; i  ){
           sentence  = eleloosp[i]   " ";
        }

        return sentence;
    }
}
 

Выходной сигнал:

 How about
How about a
 

Дайте мне знать, если вам помогут с этим!

Ответ №2:

Может быть много способов сделать это. Краткий способ сделать это с помощью следующих функций:

  1. String#join
  2. Arrays#copyOfRange
  3. Integer#min

ДЕМОНСТРАЦИЯ:

 import java.util.Arrays;

public class Main {
    static String[] eleloosp = { "How", "about", "a", "nice", "tea" };

    public static void main(String[] args) {
        // Test
        System.out.println(getCF(3));
        System.out.println(getCF(2));
        System.out.println(getCF(8));
    }

    public static String getCF(int j) {
        return String.join(" ", Arrays.copyOfRange(eleloosp, 0, Integer.min(j   1, eleloosp.length)));
    }
}
 

Выходной сигнал:

 How about a nice
How about a
How about a nice tea