给出一种物质的分子式(不带括号),求分子量。 本题中的分子式只包含4种原子,分别为C、H、O、N, 原子量分别为12、1、16、14(g/mol)。 例如:C6H5OH的分子
package jingdong;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
/**
* Created with IntelliJ IDEA
* Description:只有CHON四个元素,计算这个有机分子式的分子量
* Author: D
* Date: 2021/3/28
* TIME: 09:45
*/
public class Main2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] chars = br.readLine().toCharArray();
//考虑数字不止一位的情况
int res = 0;
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < chars.length; i++) {
int count = 0;
if (chars[i] == 'C') stack.push(12);
else if (chars[i] == 'H') stack.push(1);
else if (chars[i] == 'O') stack.push(16);
else if (chars[i] == 'N') stack.push(14);
//判断数字位数
else if (chars[i]>=48 && chars[i] <= 57) {
while (chars[i] >= 48 && chars[i] <= 57 ) {
count = count * 10 + (chars[i] - 48) % 10;
//防止while循环越界
if (i + 1 < chars.length){
i++;
} else
//如果越界就break
break;
}
//如果下一个不是数字且不是最后一个字符,执行i--
if (i < chars.length - 1 && (chars[i] <=48 || chars[i] >= 57)){
i--;
}
stack.push(stack.pop() * count);
}
}
while (!stack.isEmpty()){
res = res + stack.pop();
}
System.out.println(res);
}
}
若有不对,欢迎指错