我有一个简单的问题,但最近它一直在推动着我的坚果。 我正在制作化学程序(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