Это должно вывести 1.
Когда вы разделяете строку на запятые, вы находите все позиции запятых в строке, а затем возвращаете список строк вокруг тех. Это включает строки до первого запятой и после последней запятой.
В случае, когда ввод не содержит запятых, вы все равно найдете исходную строку.
Если бы ваш пример был:
String input = "451";
List<String> parts = input.split(",");
prtin(parts.length);
Вы, вероятно, ожидаете, что части будут в списке ["451"]
. Это также происходит здесь, потому что функция split не различает пустые части от непустых.
Если строка содержит запятую, скажем, строку ","
, при разбиении вы получите две части, в данном случае две пустые части. В общем случае вы получаете n + 1 часть для строки, содержащей n совпадений шаблона разделения.