十进制转换为K进制 Java 代码

最近在读《计算机科学导论——跨学科方法》(机械工业出版社),习题索引:1.3.21:

  编写一个新程序Kary,输入两个命令行参数i和k,并将i转换为基数k的数值表示。假设i是java中的long数据类型,k是2到16之间的整数。对于大于10的基,使用A到F来表示第11位到第16位的数字。

  下面是我自己写的代码,经过测试可以运行。限于自己水平有限,不当之处,望多多指正。

 1 package test;
 2 
 3 public class Kary {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         long i = 23;
 8         int k = 12;
 9         long t;//参数 t
10         String s = " ";
11         for( ;i>0; i /= k) // i/= k 是在for下面的loop执行完后,再执行的。
12         {
13                 t = i%k;
14                 if(t >= 10)
15                     {
16                     //大括号明确 if 的边界
17                     if(t<11) System.out.print("A"+s);
18                     if(11<=t&&t<12)System.out.println("B"+s);
19                     if(12<=t&&t<13)System.out.println("C"+s);
20                     if(13<=t&&t<14)System.out.println("D"+s);
21                     if(14<=t&&t<15)System.out.println("E"+s);
22                     if(15<=t&&t<16)System.out.println("F"+s);
23                     }
24                  else
25                     {
26                     System.out.println(t);
27                     }
28             
29 
30 
31         }
32         
33         
34 
35     }
36 
37 }

 第一次修改 :

  将每一个打印变成println换行打印,之前打印出来的排列顺序是相反的。这样子打印计算结果应该是,从下往上读。

Tags: