webBG - програмисти, машинно обучение, javascript, python, php, питам, говорим, публикации

Преобразувайте низ в масив от двойни числа, разделени със знаци, които не са числа

Знам как мога да разделя низ със специален знак като интервал:

String numbers = "22 14 10 8 70";
int [] n1 = new int [numbers.length()];
for(int n = 0; n < numbers.length(); n++) {
    n1[n] = Integer.parseInt(numbers.split(" ")[n]);
}

Но искам да разделя String с всеки нечислов (също отрицателен знак и плаваща запетая) тип знаци; като този низ:

String numbers = "22+14/10*8-70";
29.03.2013

  • Regex не е начинът за това. 29.03.2013
  • @LuiggiMendoza Премахвам regex от етикети 29.03.2013
  • String.split() може да се разделя върху низ с регулярен израз 29.03.2013
  • @jedwards това изглежда като синтактичен анализ на формула, а Regex не е правилният начин. 29.03.2013

Отговори:


1

Опитайте този алгоритъм Алгоритъм за маневриране.

Алгоритъмът за маневриране е метод за анализиране на математически изрази, посочени в инфиксна нотация.

29.03.2013

2

Можете също да трансформирате наличния израз първо в Postfix израз и след това да го оцените. Ето обяснение за това.

29.03.2013

3

Низ .split() може да се раздели върху низ с регулярен израз:

String numbers = "22+14/10*8-70";
String[] elements = numbers.split("[^0-9\\.]");
for(String e : elements)
{
    System.out.println("Element: " + e);
}

щампи:

Element: 22
Element: 14
Element: 10
Element: 8
Element: 70
29.03.2013
  • Опитайте отново, сега с 22,5+14,0/10,0*8,0-70,5 29.03.2013
  • Аз съм с @LuiggiMendoza, искам двойни резултати 29.03.2013
  • @Ehsan, двойните се анализират правилно, отрицателните числа не. Между другото, хубаво е, когато редактирате въпроса си, да поставите ред за редактиране там, така че хората, които са щастливи да гласуват против, като Луиджи, осъзнават, че отговорът е бил публикуван преди редактирането на въпроса. 29.03.2013
  • @jedwards двама души с по-висока репутация (63k и 105k) отговориха на това преди вас и изтриха отговорите си, тъй като не разрешиха въпроса. Освен това, моля, прочетете Какво е приемлив отговор?, раздел 7. 29.03.2013
  • Отговорът беше публикуван преди въпросът да бъде редактиран. И служи като приличен отговор за общия случай на разбор без формула. Обърнете внимание, че заглавието на въпроса е Преобразуване на низ в масив от двойни числа, разделен с нечислови знаци, а не Разбор на формула. Вие посочихте и аз признах, че това няма да работи с формули с отрицателни числа. Също така гласувах за отговор, който е по-добре позициониран за въпроса, тъй като беше редактиран. Просто е малко странно, че вместо да бъдете градивни и да отговорите сами на въпроса, вие просто полицействате с гласове против... добре. 29.03.2013
  • Нови материали

    Записване на грешки — Как да записвате грешки във вашето приложение, за да ги отстраните по-късно
    Записването на грешки е важна част от „обработването на грешки“. Накратко, когато възникнат определени грешки в програмите, вие искате да знаете за това. Това е особено важно при грешки. Ти..

    Кратко въведение в теорията на графите
    Кратко въведение в теорията на графите Втора част: внедряване на python на пълни графики В моята предишна статия въведох три основни концепции за графите: върхове, ръбове и тегла. В тази..

    Днес ще пиша за машинно обучение. Смятам се за ентусиаст, а не за експерт, така че имайте това предвид. С това казано, искам...
    Днес ще пиша за машинно обучение. Смятам се за ентусиаст, а не за експерт, така че имайте това предвид. С това казано искам да обясня защо машинното обучение има значение. За да бъда съвсем..

    Какво е структурно типизиране и как Typescript го използва в своя полза?
    Всички знаят тези дни, че „Typescript е строго синтактично надмножество на JavaScript и добавя незадължително статично въвеждане към езика.“. Но какво всъщност означава? Защо миграцията от..

    3 начина за премахване на дубликати от масив в Javascript
    Вие сте уеб разработчик? Програмист ли си? Тогава ще сте запознати с JavaScript и различните му вградени функции, методи и т.н. за различни реализации, проблеми и цели. Един от тези широко..

    Архитектура и обучение на конволюционни невронни мрежи (7 точки):
    Тази публикация предоставя подробности за архитектурата на Конволюционната невронна мрежа (CNN), функциите и обучението на всеки слой, завършвайки с резюме на обучението на CNN...

    Създайте разширение за Chrome с помощта на Angular
    Този урок е базиран на манифеста на разширението на chrome версия 3 (MV3), а също и на Angular версия 2+ (2, 3 и...). Ако не сте използвали манифест версия 3, можете да следвате този урок ,..