我有一个简单的问题,但它最近让我发疯。我正在制作一个化学程序(更具体地说是 Android 应用程序),并且我有一种方法可以分离用户输入的元素。例如,如果有人在哪里输入“FeZnKPb”,它将被分成“Fe”、“Zn”、“K”和“Pb”。
为此,我使用了一些嵌套循环和变量来控制它。我在 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 字符元素,例如“Fe”或“Zn”。我希望它也能识别像“K”这样的其他人。另一个问题是它有时会跳过一些其他元素。例如,如果我输入“FeZnHg”,它会将它们分成“Fe”、“Zn”和“Hg”。但是,如果我以不同的顺序输入它们,例如“ZnFeHg”,由于某种原因,它只会检测到“Zn”和“Hg”,而不是“Fe”。
我还有什么其他方法可以解决这个问题以使其正常工作?