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 шт):
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;
}