Вот пример
public static void main(String[] args) {
System.out.println(add5(1));
}
public static int add5(int a) {
return add5(a) + 5;
}
. StackOverflowError в основном - это когда вы пытаетесь что-то сделать, что, скорее всего, называет себя и продолжает бесконечность (или до тех пор, пока не даст StackOverflowError).
add5(a)
будет вызывать себя, а затем снова называть себя и т. д.
Вы можете использовать эту единственную команду awk
, которая использует разделитель полей запятой:
value="inst1,inst2,inst 3"
awk -F, '{print NF}' <<< "$value"
3
Существует альтернативное решение, использующее grep
:
grep -oE '[^,]+' <<< "$value" | wc -l
С bash Добавьте запятую в конец значения, удалите каждую не запятую и получите длину.
cnt="${value//[^,]/},";echo "${#cnt}"
Сначала замените место чем-то другим, затем сделайте то, что вы сделали. Например:
echo "$value" | tr ' ' '_' | tr ',' ' ' | wc -w
Сохранение слов в массиве и вывод числа элементов:
IFS=, read -ra arr <<< "$value"; echo "${#arr[@]}"
Вы можете использовать sed 's/ //g'
для удаления любых пробелов в строке. Таким образом, полная команда будет:
echo "$value" | sed 's/ //g' | tr ',' ' ' | wc -w
value=""
иvalue=,
. – PesaThe 14 July 2018 в 18:24