Разбить строку на триады

221
07 декабря 2017, 00:06

Всем привет, недавно задавал этот вопрос, мне помог @Sergey Gornostaev, но вот тестировал, и нашел проблемку, когда в строке не числа, а слова или пустые поля, данные перестают выводится на страницу и выдается ошибка java.lang.NullPointerException at Bean.TriadBean.setChunks(TriadBean.java:46), может кто знает как исправить?

Вот пример бина

    public class TriadBean {
    private String[] chunks;
    private String delimiter;
    private int size;
    public String getDelimiter() {
        return delimiter;
    }
    public void setDelimiter(String delimiter) {
        if (delimiter == null || delimiter.isEmpty())
            throw new IllegalArgumentException("Разделитель должен быть установлен!");
        this.delimiter = delimiter;
    }
    public Integer getSize() {
        return size;
    }
    public void setSize(Integer size) {
        if (size < 1)
            throw new IllegalArgumentException("Размер группы должен быть положительным числом!");
        this.size = size;
    }
    public void setChunks(String src) {
        if (delimiter == null || size == 0)
            throw new IllegalStateException("Не установлен разделитель или размер группы!");
        int chunksCount = (int) Math.ceil((double) src.length() / (double) size);
        chunks = new String[chunksCount];
        for (int i = 0; i < chunks.length; i++)
            chunks[i] = src.substring(i * size, Math.min(src.length(), (i + 1) * size));
    }
    public String getChunks() {
        if (chunks == null)
            return "";
        return Arrays.stream(chunks)
                 .map(String::trim)
                 .collect(Collectors.joining(delimiter));
    }
}

На jsp делал так

    <jsp:useBean id="grouper" class="Bean.TriadBean">
       <jsp:setProperty name="grouper" property="delimiter" value="-"/>
       <jsp:setProperty name="grouper" property="size" value="3"/>
    </jsp:useBean>
    <c:set target="${grouper}" property="chunks" value="${vp44150sql.nc}" />
    <c:out value="${grouper.chunks}"/>
Answer 1
<jsp:useBean id="grouper" class="Bean.TriadBean">
   <jsp:setProperty name="grouper" property="delimiter" value="-"/>
   <jsp:setProperty name="grouper" property="size" value="3"/>
</jsp:useBean>
<c:if test="${not empty vp44150sql.nc}">
    <c:set target="${grouper}" property="chunks" value="${vp44150sql.nc}" />
    <c:out value="${grouper.chunks}"/>
</c:if>
Answer 2

Используйте regExp

String text = "ladhjsfdkjsfhlakjsdhe331.235145v1hj2v34j1v34";

text = text.replaceAll("(.{3})","$1 ");

System.out.println(text);
//lad hjs fdk jsf hla kjs dhe 331 .23 514 5v1 hj2 v34 j1v 34
READ ALSO
callback для .on(&ldquo;submit&rdquo;) / .on(&ldquo;click&rdquo;) и т.д

callback для .on(“submit”) / .on(“click”) и т.д

Добрый день, у меня есть callback функция, которая хранится в переменной cb, при клике, в случае удачного выполнения ajax (success), мне нужно вернуть...

225
Не правильный вывод

Не правильный вывод

Почему всегда выводит 2? Я думаю что в условии дело, как проверять key какой нажал пользователь?

213
setTimeout в неактивной вкладке

setTimeout в неактивной вкладке

Использую вот такой таймер с автокоррекцией, костылями сделал из него обратный таймер (вывод в консоль идет в обратном порядке)

292
Движение элемента в эллипсе

Движение элемента в эллипсе

Всем доброго дняПодскажите пожалуйста, как реализовать данную задачу

199