Итак, скажем, у меня есть эта строка:
+-5
Я разбиваю знак + на массив. Мой первый элемент равен null, а мой второй элемент - -5. Как я могу обойти это и сделать первый элемент только -5?
Изменение: Вот некоторые из моего кода:
Scanner sc = new Scanner(System.in);
System.out.print("Enter polynomial function: ");
String function = sc.nextLine();
function = function.replaceAll("-", "+-").replaceAll(" ", "");
String[] terms = function.split("\\+");
Я пытаюсь получить коэффициенты полинома, сначала заменив все - на +
-5x^2 + 3x -2
+-5x^2 +3x +-2
Now it should split wherever there is a + sign.
First element is null, second element is -5x^2, third element 3x and fourth is -2
Один относительно простой способ решить проблему - создать свою собственную функцию, которая проверяет первый символ строки вручную:
public static String[] splitPlus(String input) {
String toSplit = (!input.isEmpty() && input.charAt(0) == '+') ? input.substring(1) : input;
return toSplit.split("\\+");
}
Возможно, вы захотите попробовать библиотеку commons lang StringUtils:
String[] terms = StringUtils.split(function, '+');
for (String term : terms) {
System.out.println(term);
}
Вывод:
-5x^2
3x
-2
Он также разделяет пробелы.
split()
выполняет разбиение по специальному пути. Он создает массив подстрок шаблонов, заканчивающихся символом, указанным в скобках split, поэтому в вашем случае нет ничего перед " +
", поэтому он возвращает пустое string при нулевом индексе возвращаемого массива. Чтобы выполнить требуемую операцию,
См. Этот Java String.split(), иногда давая пустые строки тоже