切換
舊版
前往
大廳
主題

(Java程式碼) 任何進位→10進位

深海異音 | 2013-11-03 18:27:48 | 巴幣 8 | 人氣 1302

進位轉換:
【任何進位】 轉成 【10進位】,並且印出算式



截圖


01.


02.


03.





程式碼



import  java.io.BufferedReader;
import  java.io.IOException;
import  java.io.InputStreamReader;

public  class  zhuan_shi {

      //  顯示指數
      public  static  String ci_fang(int  a)  {
             String  s  =  String.valueOf(a);
             s =  s.replace("0",  "⁰");
             s =  s.replace("1",  "¹");
             s =  s.replace("2",  "²");
             s =  s.replace("3",  "³");
             s =  s.replace("4",  "⁴");
             s =  s.replace("5",  "⁵");
             s =  s.replace("6",  "⁶");
             s =  s.replace("7",  "⁷");
             s =  s.replace("8",  "⁸");
             s =  s.replace("9",  "⁹");
             return  s;
      }


      //  英文轉數字
      public  static  int  ying_zhuan_shu(String  s)  {
             String[]  y  =  {  "A",  "B",  "C",  "D",  "E",  "F",  "G",  "H",  "I",  "J",  "K",
                          "L",  "M",  "N",  "O",  "P",  "Q",  "R",  "S",  "T",  "U",  "V",  "W",
                          "X",  "Y",  "Z"  };
             int[]  z  =  {  10,  11,  12,  13,  14,  15,  16,  17,  18,  19,  20,  
                          21,  22,  23,  24, 25,  26,  27,  28,  29,  30,  31,  32,
                          33,  34,  35  };
             for  (int  i  =  0;  i  <=  25;  i++)  {
                   if  (s.toUpperCase().equals(y[i]))  {
                          return  z[i];
                   }
             }
             return  Integer.valueOf(s);
      }


      public  static  void  main(String[] args)  throws  IOException {
          
              BufferedReader  sc  =  new  BufferedReader(
new
  InputStreamReader(System.in));

             System.out.println("任何進位10進位\n//-----------------------");

             System.out.print("輸入進位值:");
             int  jin_wei =  Integer.valueOf(sc.readLine());//  進位值

             System.out.print("輸入轉換的數字:");
             String  shu_ru =  sc.readLine();//  輸入的值

             int  chang  =  shu_ru.length();//  長度
             int[]  zan_cuen =  new  int[chang  +  1];//  暫存
             long  sum  =  0;//  答案的加總
             String  a1,  a2,  a3;
             boolean  cuo  =  false;//  判斷是否有錯誤
             String  cuo_zi =  "";//  顯示的錯誤內容
             String  in  =  "";//  最後顯示的結果

             in +=  (jin_wei  +  "進位:"  +  shu_ru +  "    10進位\n\n");

             for  (int  i  =  0;  i  <=  chang  -  1;  i++)  {

                   if  (i  ==  chang  -  1)  {
                          a1  =  "";
                   }  else  {
                          a1  =  shu_ru.substring(0,  chang  -  (i  +  1));
                   }

                   //  取得目前要被轉換的數字
                   a2  =  shu_ru.substring(chang  -  (i  +  1),  chang  -  i);

                   if  (i  ==  0)  {
                          a3  =  "";
                   }  else  {
                          a3  =  shu_ru.substring(chang  -  i,  chang);
                   }

                   zan_cuen[i]  =  (int)  (Integer.valueOf(ying_zhuan_shu(a2))  *  Math
                                .pow(jin_wei,  i));//  暫存(  a2*進位值^i  )

                   if  (zan_cuen[i] >  2100000000)  {
                          cuo  =  true;//  超過21
                          cuo_zi  =  "你入的數字太大(計算結果超過21億將無法計算)";//  顯示的錯誤內容
                   }

                   in  +=  (a1  +  ""  +  a2  +  ""  +  a3  +  
                               "   "  +  a2  +  "×"  +  jin_wei
                                +  ci_fang(i)  +  "  =  "
                                +  String.format("%2d",  ying_zhuan_shu(a2))  +  "×"
                                +  (int)  Math.pow(jin_wei,  i)  +  
                               " =  "  +  zan_cuen[i]  +  "\n");

             }

             in +=  "\n";

             for  (int  i  =  0;  i  <=  chang  -  1;  i++)  {
                   sum  +=  zan_cuen[i];
                   if  (i  ==  chang  -  1)  {
                          in  +=  (zan_cuen[i]);//  如果是最後一個數字,則不印出"+"
                   }  else  {
                          in  +=  (zan_cuen[i]  +  "+");
                   }
             }

             if  (cuo  ==  true)  {
                   in  =  ("檢視結果:\n"  +  cuo_zi);
                   
             }

             in +=  ("\n答案=  "  +  sum);
             System.out.println(in);//  顯示計算結果
             System.gc();//  釋放記憶體
      }
}

送禮物贊助創作者 !
0
留言

創作回應

更多創作