格式化

廣告

廣告2

2012年9月23日 星期日

[JAVA教學範例] d635: 幸運777?luck (八進制轉換)

[JAVA教學範例] d635: 幸運777?luck (八進制轉換)



內容 :
你說什麼?777=511?怎麼可能…?

因為這裡是八進位的777轉換成10進位的511了~(好爛ˇ)

給你十進位的數字,請你把他們轉成八進位好嗎?
輸入說明 :
每個測資點有多筆測資,請以EOF作為結束。
每組測資一行,有整數n(0<=n<=511),表示要轉換成八進位的數字
最後出現小於0的整數表示測資結束。

<所有出現的整數皆可以signed 32-bits int儲存>

輸出說明 :
對於每一行測資請輸出整數n的八進位表示。
對於最後一個小於0的整數,請輸出-1。

範例輸入 :
277
511
123
456
-1

範例輸出 :
425
777
173
710
-1

提示 :
背景知識: 流程控制
1.進位制轉換
2.共三個測資點30%、35%、35%,
第一個測資點即範例測資。

出處 :
jack1 (管理:jack1)

範例解答:
import java.io.IOException;
import java.util.Scanner;
 
public class eee { 
    @SuppressWarnings({ "resource", "unused" })
 public static void main(String[] args) throws IOException { 

     Scanner read = new Scanner(System.in);
     int input;
     int input_backup;
     int Quotient;
     int residue;
     String ans;
     
     while(read.hasNext())
     {
         ans="";
         Quotient=888;
         input=read.nextInt();
         input_backup=input;
         if(input<0) {System.out.println("-1"); break;}
         
         while(Quotient>=8)
         {
         Quotient=input/8;
         residue=input%8;
         ans+=residue;
         input=Quotient;
         }
         if(input_backup>=8)ans+=Quotient;
         ans=new StringBuffer(ans).reverse().toString();
         System.out.println(ans);
     }
    }
}

沒有留言 :