相對分子質量

小明最近迷上了化學,幾乎天天在實驗室做實驗,但是很多實驗生成的化學產物的相對分子質量令他很困惑,不知如何計算,請你編程幫他計算。

輸入的第一行是一個正整數n,表示有n組測試數據。
接下來n行每行輸入一個字符串,表示某個分子式,分子式中只包含大寫字母和數字。
注意:
輸入數據只包含8種元素,而這8種元素的相對原子質量如下:
H(1),C(12),N(14),O(16),F(19),P(31),S(32),K(39)。

對於每組輸入,輸出相對分子質量。

樣例輸入:

4

H2O

KOH

CH4

SO2

import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();//運行n次
         for(int q=0;q<n;q++){
        String fat=sc.next();//輸入化學元素
        int total=0;//相對原子質量
        int sum=1;
        char num;
        String a="";
        for(int z=fat.length()-1;z>=0;z--){
           num=fat.charAt(z);//將fat字符串的第z個數轉爲char類型
           if(num>='0'&&num<='9'){
               a=a+num;
           }
           else{
               if(a.equals("")){
                   sum=1;
               }
               else{
                   sum=Integer.parseInt(a);
               }
               total+=factor.f(num)*sum;
               a="";
           }
        }
        System.out.println(total);
}
      
    }
}
 
class factor{
    private char no;
    public static int f(char no) {
        //H(1),C(12),N(14),O(16),F(19),P(31),S(32),K(39)     
        int i=0;
    switch(no){
            case 'H':
            i=1;
            break;
            case 'C':
                i= 12; 
                break;
            case 'N':
            i=14;
            break;
             case 'O':
           i= 16;
            break;
            case 'F':
            i= 19;
            break;
             case 'P':
            i= 31;
             break;
             case 'S':
            i= 32;
             break;
             case 'K':
            i= 39;
             break;
             default:
                 break;
        }
    return i;
   }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章