вернуть несколько значений Java для удаления последней части слова

1

В моем коде метод fromright проверяет длину last[] и возвращает только одну строку. Я хочу вернуть все согласованные значения. Какое решение?

public static String last[]={"es","e","s"};

public static void main(String[] args) {
    text tx=new text();
    String checkString = "lives";
    String fin=tx.fromright(checkString);
    System.out.println("remaining:  "+fin);
}

public String fromright(String wrd) {
    String tmp="";
    for (int i = 0; i < last.length; i++) {
        tmp=wrd.substring(0, wrd.length()-last.length);
    }
    return tmp;
}
  • 0
    Вернуть массив?
  • 0
    Покажите нам пример выходных данных, которые вы ожидаете.
Показать ещё 4 комментария
Теги:
string

2 ответа

3

Вы переопределяете свою переменную tmp в своем цикле for каждый раз. Таким образом, вы можете получить только один результат. Используйте это вместо или smth. аналогичный, который может содержать несколько значений.

  public List<String> fromright(String wrd) {
            List<String> tmp= new ArrayList<String>();
            for (int i = 0; i < last.length; i++) {
                tmp.add(wrd.substring(0, wrd.length()-last.length));
            }
            return tmp;

EDIT: Это больше не работает.

String fin=tx.fromright(checkString);
    ^

Замените его

List<String> fin= new ArrayList<String>(tx.fromright(checkString));

И распечатайте все значения с помощью этого

for(String s : fin) System.out.println(s);
  • 0
    показывая ошибку как не общую @ Murat K.
  • 0
    @ Мохаммед Что ты сделал?
Показать ещё 4 комментария
2
public List<String> fromright(String wrd) {
    List<String> result = new ArrayList<>();
    for (int i = 0; i < last.length; i++) {
        if(wrd.endsWith(last[i]))
           result.add(last[i]);
    }
    return result;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню