切換
舊版
前往
大廳
主題

(Java程式碼) 8進位→2進位

深海異音 | 2013-11-03 22:47:43 | 巴幣 2 | 人氣 1095

進位轉換:
8進位】 轉成 【2進位】,並且印出算式



8進位要轉成2進位的方法
8=2*2*2
表示【1個8進位的數字】變成【3個2進位的數字】,
0(8)=000(2)
1=001、2=010、3=011、
4=100、5=101、6=110、
7=111,到8就進位



截圖






程式碼


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

public  class  _8_to_2  {

      //  顯示全型數字
      public  static  String  quan_xing(String  s)  {
             s  =  s.replace("0",  "");//  如果字串內有半型的0,則變成全型的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",  "");
             s  =  s.replace("A",  "");
             s  =  s.replace("B",  "");
             s  =  s.replace("C",  "");
             s  =  s.replace("D",  "");
             s  =  s.replace("E",  "");
             s  =  s.replace("F",  "");
             return  s;
      }

      public  static  void  main(String[]  args)  throws  IOException  {
            
              BufferedReader  sc  =  new  BufferedReader(
                          new  InputStreamReader(System.in));//  從鍵盤讀取文字

             System.out.println("8進位2進位\n//-----------------------");
             System.out.print("輸入要轉換的數字:");
             String  shu_ru =  sc.readLine().toUpperCase();//  輸入的值
             String  in  =  "";//  儲存【最後印出結果】
             in  +=  ("8進位:"  +  shu_ru +  "        2進位"  +  "\n\n");

             boolean  cuo  =  false;//  判斷是否有錯誤
             String  cuo_zi =  "";//  判斷錯誤的文字
             int  chang  =  shu_ru.length();//  字串長度
             String[]  xian  =  new  String[chang];//  計算用
             String  sum  =  "";//  顯示【答案】
             String[]  s8  =  {  "0",  "1",  "2",  "3",  "4",  "5",  "6",  "7"  };
             String[]  s2  =  {  "000",  "001",  "010",  "011",  "100",  "101",  "110",  "111"  };
           

             for  (int  i  =  0;  i  <  chang; i++)  {//  印出個別16進位的符號(定位)
                   xian[i]  =  shu_ru.substring(i,  i  +  1);
                   in  +=  " "  +  quan_xing(xian[i])  +  "";
             }

             in  +=  "\n";//  換行

             for  (int  i  =  0;  i  <  chang; i++)  {
                   for  (int  j  =  0;  j  <  s2.length;  j++)  {
                          if  (xian[i].equals(s8[j]))  {//  印出計算結果
                                in  +=  " "  +  quan_xing(s2[j]);
                                sum  +=  s2[j];//  儲存答案
                          }
                   }

                   //  判斷是否有錯字
                   if  (!(xian[i].equals("0")  ||  xian[i].equals("1")
                                ||  xian[i].equals("2")  ||  xian[i].equals("3")
                                ||  xian[i].equals("4")  ||  xian[i].equals("5")
                                ||  xian[i].equals("6")  ||  xian[i].equals("7")))  {
                          cuo  =  true;
                          cuo_zi  +=  xian[i];//  錯字
                   }

             }

             in  +=  "\n\n答案:    "  +  sum;

             if  (cuo  ==  true)  {//  如果有錯字
                   in  =  ("檢視結果:\n有異音的字:    "  +  cuo_zi +  "");
             }

             System.out.println(in);//  顯示計算結果
             System.gc();//  釋放記憶體

      }

}




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

創作回應

更多創作