我有一個簡單的問題,但最近它一直在推動着我的堅果。 我正在製作化學程序(Android應用程序,更具體),我有一種方法可以分離用戶輸入的元素。例如,如果有人輸入「FeZnKPb」,它將被分成「Fe」,「Zn」,「K」和「Pb」。嵌套For-Loops - 使用數組對象分隔字符串元素
爲此,我使用了幾個嵌套循環和變量來控制它。我擁有Chem []數組中定義的所有元素。然後將分隔的元素存儲在名爲savedChem []的數組中。它基本上只是遍歷所有元素常量(Chem []),並將這些元素的名稱和公式複製到savedChem []中,如果它與輸入匹配的話。
這裏是我的代碼如下:
public void separateElements(String Input)
{
boolean found = false;
int start = 0;
int end = 2;
int length = Input.length();
while(length >= end)
{
for(int x = 0; x < numChemicals; x++)
{
if((end + 0) > length)
{
end += 5;
break;
}
if(Input.substring(start, end).equals(Chem[x].getFormula()))
{
savedChem[numSaved].setName(Chem[x].getName());
savedChem[numSaved].setFormula(Chem[x].getFormula());
numSaved++;
start += 2;
end += 2;
found = true;
}
else
{
found = false;
}
}
if(!found)
{
start += 2;
end += 2;
}
}
}
我的問題是,它只有2個字符的元素,如「鐵」或「鋅」的作品。我希望它也能識別像「K」的其他人。另一個問題是,它有時會跳過一些其他元素。例如,如果我輸入「FeZnHg」,它會將它們分離爲「Fe」,「Zn」和「Hg」。但是,如果我按照「ZnFeHg」這樣的不同順序輸入它們,則由於某種原因,它只能檢測到「Zn」和「Hg」,而不是「Fe」。
還有什麼其他方法可以解決這個問題,使其正常工作?
是否正確的大小寫敏感性約束?也就是說,水星會一直汞,或者它可能會顯示爲HG? – 2012-07-30 22:37:25
您是否嘗試過一步一步地調試代碼?還是用一個正則表達式。 – Bhaskar 2012-07-30 22:46:23
@NathanielFord是的,它永遠是這樣的。我有另一種方法來糾正這種情況。 – Pkmmte 2012-07-30 22:58:13