一個ArrayList所以我就來回好幾次嘗試多種不同的方法,但我似乎無法環繞此方法的適當的算法我的頭。我創建了一個使用ArrayList的Polynomial類,其中Term(int coeff,int expo)coeff是多項式的係數,expo是指數。在測試類中,我必須插入多個不同的Term對象,但它們需要按其指數以升序插入(例如,4x^1 + 2x^3 + x^4 + 5x^7)插入升序排列的對象與Java中
這是代碼我有最多這需要兩個參數,係數_和博覽會插入件()方法的末尾:
public class Polynomial
{
private ArrayList<Term> polynomials ;
/**
* Creates a new Polynomial object with no terms
*/
public Polynomial()
{
polynomials = new ArrayList<>() ;
}
/**
* Inserts a new term into its proper place in a Polynomial
* @param coeff the coefficient of the new term
* @param expo the exponent of the new term
*/
public void insert(int coeff, int expo)
{
Term newTerm = new Term (coeff, expo) ;
if (polynomials.isEmpty())
{
polynomials.add(newTerm);
return;
}
int polySize = polynomials.size() - 1 ;
for (int i = 0 ; i <= polySize ; i++)
{
Term listTerm = polynomials.get(i) ;
int listTermExpo = listTerm.getExpo() ;
if (expo <= listTermExpo)
{
polynomials.add(i, newTerm);
return;
}
else if (expo > listTermExpo)
{
polynomials.add(newTerm) ;
return ;
}
}
}
問題出現靠近代碼的末尾。一旦我放入一個其係數不是< = Term的索引,它將轉到else if語句並將其添加到列表的末尾。這是錯誤的,因爲它需要被添加到只比下一個係數更大的地方。僅僅因爲它大於該係數並不意味着它的最大系數。我試着for語句做向後其中:
for (i = polySize ; i >= 0 ; i--)
{
etc.
}
但是,這並沒有工作,要麼因爲它提出了同樣的問題,只是周圍的其他方法。如果任何人可以提供一些解決方案或答案,將非常感激,因爲我很困惑。在這一點上,我確信我只是讓它太複雜了。我只想知道如何識別指數較大,但隨後回到for循環,直到它小於或等於索引的指數。
另外,我應該提,我不能使用任何其他集合或類,所以我必須使用的,如果做到這一點,否則,或while語句做。 在此先感謝!之後的for循環
else if (expo > listTermExpo)
{
polynomials.add(newTerm);
return;
}
地點是::
所以纔要總結這一切時,你問如何通過將期限與ArrayList的索引爲0的最大系數進行排序的ArrayList,以及第二大的指數1等..? – 2013-04-18 02:23:07
沒有實際相反,我想把期限與該ArrayList年底最大的指數,在指數的ArrayList 0最小的指數,該係數在多項式 – 2013-04-18 02:26:49