2013-02-24 6 views
0

Предположим, что у меня есть полином -x^2 + 2x - 1 = 0. Он считывается из файла.Как обнаружить многочлены в Java

У меня есть код, который анализирует каждый символ полинома.

Я хочу создать дополнительный шаг, который компактирует многочлен (так что белые пробелы устраняются), поэтому я могу проверить, действительно ли строка является полиномом, который я могу легко сделать, просто проверив последний 2-й индекс многочлена который равен знаку равенства и нулевому значению: (= 0)

Проблема в том, что длина полинома имеет разную длину, что дало мне мысль использовать ArrayList. Проблема в том, что я не могу объявить, что мой ArrayList имеет тип Character, чтобы хранить каждый символ в последовательном индексе ArrayList.

public void createEquationNoWhiteSpaces(){ 
    // it cannot be done because there is no ArrayList of characters 
    textArrayList = new ArrayList<String>(); 
    for(int i = 0; i < text.length(); i++){ 
     // Store the characters of the polynomial in an ArrayList 
     // because each polynomial has different length 
     if(text.charAt(i) != ' ') 
      textArrayList = text.charAt(i); 
    } 
} 
+0

В общем, вы не можете просто проверить на «знак равенства и нулю, как это: (= 0)», чтобы проверить строка является ли многочлен. Что делать, если вашей программе была задана строка «e^x = 0»? Если ваш проблемный домен содержит ничего, кроме поиска root для многочленов, то вам не нужно беспокоиться об этом, но вопрос не делает этого ясным. –

+0

Что не так со строками? или вы можете пойти на традиционное представление - вектор коэффициентов – radai

+0

@AdamMihalcin Вот почему я хотел создать этот дополнительный шаг, который должен сделать метод charAt в строке и сохранить каждый символ, который не является белым пространством в ArrayList типа. Таким образом, даже если полином был удален, программа может приспособиться к этому. Но по какой-то причине я не могу создать ArrayList типа Character. – Nicholas

ответ

1

Если вы хотите использовать массив, вы можете, конечно, объявить ArrayList<Character>. Однако в любом случае вы можете использовать StringBuilder, а не список для этой цели.

+0

Я попробую использовать StringBuilder. – Nicholas

1
st.replaceAll("\\s","") 

удаляет все пробелы в струнной ст

+0

Я не понимаю, как этот метод работает. Первый аргумент имеет черную черту и не имеет пробелов. – Nicholas

+1

см. Http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#sum \ s - шаблон для всех пробелов – DominikM

+0

Спасибо за ссылку. – Nicholas

Смежные вопросы