我14岁,所以我们在学校里学习科学方程和离子。 请记住,我是java的新手,并从谷歌搜索得到地图的东西。我也是科学方程式的新手嘿嘿,所以如果你看到任何东西请指出(尽管这不是主要问题的一部分)。我需要在这两方面练习,为什么不创建一个关于科学的java程序呢? ;)无论如何,我已经到了我需要获取字符串中的最后两个项目并将它们更改为整数的阶段然后我想我需要在java中进行代数来解决一个小方程式来获取字母前面的小数字。这就是我需要做的所有事情,然后我可以继续制作我的节目:D。非常感谢任何帮助,如果你看到其他任何东西,请指出。谢谢!
这是文件:Run.java
package scientificFormula;
public class Run {
public static void main(String[] args) {
Formula formula = new Formula();
formula.compound1 = args[0];
formula.compound2 = args[1];
String theFormula = formula.createFormula();
System.out.println("Compound: " + args[0] + " " + args[1]
+ " = " + theFormula);
}
}
和Formula.java
:
package scientificFormula;
import java.util.HashMap;
import java.util.Map;
public class Formula {
String compound1;
String compound2;
static private Map<String, String> map = new HashMap<String, String>();
void initiateIons() {
//1+
map.put("Hydrogen", "H^1+");
map.put("Lithium", "Li^1+");
map.put("Sodium", "Na^1+");
map.put("Potassium", "K^1+");
map.put("Rubidium", "Rb^1+");
//2+
map.put("Magnesium", "Mg^2+");
map.put("Calcium", "Ca^2+");
map.put("Strontium", "Sr^2+");
//3+
map.put("Aluminium", "Al^3+");
//3-
map.put("Nitrogem", "N^-3");
map.put("Phosphorus", "P^-3");
//2-
map.put("Oxygen", "O^-2");
map.put("Sulfar", "S^-2");
map.put("Selenium", "Se^-2");
//1-
map.put("Fluorine", "F^-1");
map.put("Chlorine", "Cl^-1");
map.put("Bromine", "Br^-1");
map.put("Iodine", "I^-1");
}
String createFormula() {
initiateIons();
//Example Calcium Iodine:
//2x + -1y = 0
//x = 1 and y = 2
String symbol1 = map.get(compound1);
String symbol2 = map.get(compound2);
return symbol1 + symbol2;
}
}
修改:
回复以下Jigar和Eran的评论:
我进入了属性并更改了Run.java
...的论点
输入:
Sodium Chlorine
输出:
Compound: Sodium Chlorine = Na^1+Cl^1-
例如这个字符串:&#34; Iodine&#34;,&#34; I ^ -1&#34; 这两个项目是-1我想做那个int。感谢。
答案 0 :(得分:4)
听起来你想要字符串的最后两个字符而不是位。如果我没弄错的话你想在Oxygen这样的东西结束时抓住-2
。
可以使用以下代码行完成:
int i = Integer.parseInt(str.replace("+", "").substring(str.length() - 2));
替换是必要的,因为parseInt不仅仅在值+
前面-
。
使用Hot Licks建议split
,您可以执行以下操作:
String[] symbol1Parts = symbol1.split("\\^");
int symbol1Int = Integer.parseInt(symbol1Parts[1].replace("+", "")); // the [1] assumes that there will only be one ^ character before the charge
String[] symbol2Parts = symbol2.split("\\^");
int symbol2Int = Integer.parseInt(symbol2Parts[1].replace("+", "")); // the [1] assumes that there will only be one ^ character before the charge