现给你若干个分子式需要你求分子量。
例如:C6H5OH的分子量为12.016+1.0085+16.00+1.008=94.108g/mol。
思路:主要是循环,先看是否为'A'、'C'、'H'、'O'、其中一个,是则返回对应的数值。再判断后面的值是否还是字母或是数字 ,再分别分析情况。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int m=in.nextInt();
while(m-- > 0){
double sum=0.0;
int i=0;
String s=in.next();
while(i<s.length()){
sum+=f(c(s.charAt(i)), i, s);
i++;
}
System.out.printf("%.3f\n",sum);
}
}
private static double f(double d,int i,String s) {
int k=0;
double sum=0.0;
while(i<s.length()-1&&s.charAt(i+1)>'0'&&s.charAt(i+1)<='9')
{
k=k*10+s.charAt(i+1)-'0';
i++;
}
if(k==0) {//当字母后面没有数字时
sum+=d;
}
else {//当字母后面有数字时
sum+=d*k;
}
return sum;
}
private static double c(char c) {
// TODO Auto-generated method stub
switch(c) {
case 'C':return 12.01;
case 'H':return 1.008;
case 'O':return 16.00;
case 'N':return 14.01;
}
return 0;
}
}