Java - вывод элементов в массиве, длина которых больше пяти

У меня код который позволяет сначала ввести количество элементов в массиве, а потом самому писать нужные элементы. И когда у меня уже будет массив из слов.

Например, я хочу вывести в консоль только те, длина у которых больше 5 символов. И я написал метод elementDluzszyNizPiec в котором проверяю длину каждого из элементов, и он у меня работает как-то не корректно, в чем собственно говоря и заключается моя проблема...

То есть у меня, когда я подаю два элемента в массив {"1", "123456"}, то результат получается верный, и я в консоли вижу только элемент "123456", но когда я ввожу массив {"123456", "1"}, то в консоль выводится оба
элемента, то есть "123456" "1". И я не понимаю почему так работает, и еще такой момент, когда подаю одни элемент длина которого = 4 символа, то вообще получаю сбой + ошибку

ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1

может кто то знает лучше в чем проблема и подскажет мне?

И + еще такой момент, в методе elementDluzszyNizPiec в строчке System.out.print(tablica[i] + "\n"); я пытаю высветлить в консоли элементы который здесь проверяются, то есть те которые я раньше ввел, но если я например ввел, опять же массив {"1", "123456"} то у меня высветляется только элемент "123456", а если ввел массив {"123456", "1"} то вообще высветляет консоль два одинаковых элемента, то есть "123456", "123456", будто он переприсваивает все последующие элементы на значение первого, не знаю почему так.

package com.company;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Tablica {
    private int liczbaElementow;
    private String[] tablica;

    private String resultOdPoczatku = "";
    private String resultOdKonca = "";
    private char[] charArrayOdPoczatku;
    private char[] charArrayOdKonca;
    private String resultOdKoncaChar = "";

    private String element;

    private String[] alfabet = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"};

    public Tablica(int liczbaElementow) {
        this.liczbaElementow = liczbaElementow;
        tablica = new String[liczbaElementow];
    }

    public void do_tablicy() {
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < tablica.length; i++)
            tablica[i] = scanner.nextLine();
    }


    public boolean elementDluzszyNizPiec(String element) {
        for (int i = 0; i < element.length(); i++)
            if (tablica[i].length() > 5) {
                System.out.print(tablica[i] + "\n");
                    return true;
            }
        return false;
    }

    public List<String> getElementDluzszyNizPiec() {
        List<String> result = new ArrayList<>();
        for (int i = 0; i < tablica.length; i++) {
            if (elementDluzszyNizPiec(tablica[i])) {
                result.add(tablica[i]);
            }
        }
        return result;
    }

    public void wypisz3() {
        List<String> elementyDluzszeNizPiec = getElementDluzszyNizPiec();
        if (elementyDluzszeNizPiec.isEmpty()) {
            System.out.print("\nW danym ciagu nie ma elementow dluzszych niz 5 znakow");
        } else {
            System.out.print("\nElementy w danym ciagu dluzsze niz 5: ");
            for (String element : elementyDluzszeNizPiec) {
                System.out.print(element + "   ");
            }
        }
    }
}
package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Podaj ilosc slow: ");
        int n = scanner.nextInt();
        Tablica tablica = new Tablica(n);
        tablica.do_tablicy();
        tablica.wypisz3();
    }
}

Ответы (1 шт):

Автор решения: Sergey Zh.
    public boolean elementDluzszyNizPiec(String element) {
    for (int i = 0; i < element.length(); i++)
        if (tablica[i].length() > 5) {
            System.out.print(tablica[i] + "\n");
                return true;
        }
    return false;
}

Вот эта часть кода неправильная. Ведь что такое i? Это не индекс элемента в таблице, а номер символа в элементе. Если я правильно понимаю задачу метода - проверить элемент на условие "в элементе больше 5 символов", тогда можно поменять метод на:

   public boolean elementDluzszyNizPiec(String element) {
   return element.length() > 5;
}
→ Ссылка