我必须验证一个应该模拟化学公式的字符串(不包括电荷(+/-)等符号),并且它必须尊重公式的编写方式(正确使用括号,每个元素最多两个字母,以及缺少不是括号的非字母数字字符)。但是,它不需要知道提交的分子是否能够存在 - 仅当字符串本身有效时。
假设要验证的字符串的内容如下所示:“Na3(CO2)3”
假设我已经验证了字符串不为空并且没有任何非法字符或不正确使用括号,则有必要将字符串分隔开来,比如说符号,这样我就可以存储各个元素(我指的是所有元素。在这种情况下,是 3 个 Na 和 3 个 CO2 粒子)。
所以应该这样划分:
"Na",
"3",
"(",
"C"
"O"
"2"
")"
"3"
我试图用 a 来划分它,for但是有很多条件可以“分隔”字符串,我不确定如何正确地做到这一点 - 特别是考虑到一个元素可以有 1 个或 2 个字符。
目前,我的代码看起来像这样,忽略了其他很容易验证的东西。
public boolean validerFormuleChimique(String formuleChimique, StringWrapper message)
{
ArrayList<String> symbolSubmited = new ArrayList<String>();
symbolSubmited.add(new String());
symbolSubmited.get(0).equals("");
for (int i =0; i< formuleChimique.length(); i++)
{
if(!Character.isLetterOrDigit(formuleChimique.charAt(i)) &&
( formuleChimique.charAt(i) != '(' ||
formuleChimique.charAt(i) != ')' ))
{
message.contenu = messagesErreur[9];
return false;
}
}
return false;
}
我在代码中看到的另一个问题是我无法在 ArrayList 中使用 += 修改字符串。我可以使用数组,但在验证之前无法知道公式的长度。所以就是这样。
我希望我不仅可以验证公式,而且可以将公式的每个“符号”(包括数字和括号)存储在字符串的 ArrayList 中。
绝地无双
慕田峪4524236
相关分类