A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王震阳老师   /  2014-8-5 23:48  /  12916 人查看  /  195 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看看题目:)
回复 使用道具 举报
看题再说
回复 使用道具 举报
果断要拿技术分
回复 使用道具 举报
抢地主- -...
回复 使用道具 举报
请查收。

Transition.zip

1.46 KB, 阅读权限: 200, 下载次数: 1

点评

牛啊 三分  发表于 2014-8-8 22:01

评分

参与人数 1技术分 +3 收起 理由
王震阳老师 + 3 赞一个!

查看全部评分

回复 使用道具 举报
这么牛?
回复 使用道具 举报
把题共享一下吧
回复 使用道具 举报
看题太晚
回复 使用道具 举报
enya,看题拿分有么有
回复 使用道具 举报

挺好:
  1. import java.util.*;

  2. class  Transition
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 //x:表示初始的进制数。y:表示转换成的进制数。
  7.                 int x, y;
  8.                 int num;  //num:表示用户输入的数据转换为int类型的值。
  9.                 boolean flag = true; // flag:用于控制用户是否要进行下一轮数据的转换。
  10.                 while(flag)
  11.                 {
  12.                         flag = false;
  13.                         System.out.println("请输入您输入的数据是几进制的:如:2,8,10或是16:");
  14.                         x = input();
  15.                         x = judge(x);
  16.                         System.out.println("请输入您想要转换进制的数:");
  17.                         num = input(x);
  18.                         System.out.println("请输入您想要将数据转换成几进制:如:2,8,10或16");
  19.                         y = input();
  20.                         y = judge(y);
  21.                         zhuanHuan(num,x,y);
  22.                         System.out.println("您是否想进行下一次数据转换?是请输入:yes,否则输入:no");
  23.                         flag = goOn();
  24.                 }
  25.         }

  26.         //goOn():根据用户输入yes或no改变flag的值。
  27.         public static boolean  goOn()
  28.         {
  29.                 Scanner s = new Scanner(System.in);
  30.                 String str = s.next();
  31.                 if(str.equals("yes"))  return true;
  32.                 else if(str.equals("no"))  return false;
  33.                 else
  34.                 {
  35.                         System.out.println("您输入的格式不正确,请输入yes或者是no。");
  36.                         goOn();
  37.                 }
  38.         }

  39.         //input():用于接收用户输入的进制数。
  40.         public static int input()
  41.         {
  42.                 Scanner s = new Scanner(System.in);
  43.                 String str = s.next();
  44.                 int temp = Integer.parseInt(str);
  45.                 return temp;
  46.         }

  47.         //judge():用于判断进制输入是否正确。
  48.         public static int judge(int n)
  49.         {
  50.                 switch(n)
  51.                 {
  52.                         case 2:  return n;
  53.                         case 8: return n;
  54.                         case 10: return n;
  55.                         case 16: return n;
  56.                         default:  
  57.                         {
  58.                                 System.out.println("您输入的进制不正确,您只能输入2,8,10或者16。请重新输入:");
  59.                                 n = input();
  60.                                 n = judge(n);
  61.                                 return n;
  62.                         }
  63.                 }
  64.         }

  65.         //input(int x):用于接收用户输入的数据,并将它转换为十进制数。
  66.         public static int input(int x)
  67.         {
  68.                 Scanner s = new Scanner(System.in);
  69.                 String str = s.next();
  70.                 int temp = 0;
  71.                 try
  72.                 {
  73.                         temp = Integer.parseInt(str,x);
  74.                        
  75.                 }
  76.                 catch (NumberFormatException e)
  77.                 {
  78.                         System.out.println("您输入的数据格式不正确,请输入正确的数据格式:");
  79.                         temp = input(x);
  80.                 }
  81.                 return temp;
  82.         }
  83.        
  84.         //zhuanHuan方法:根据要转换成的进制数去调用相应的转换函数。
  85.         public static void zhuanHuan(int num, int x, int y)
  86.         {
  87.                 switch(y)
  88.                 {
  89.                         case 2:  toBin(num,x); break;
  90.                        
  91.                         case 8:  toOct(num,x); break;
  92.                        
  93.                         case 10:
  94.                         {
  95.                                 System.out.println(num+"的十进制形式是:" +num);
  96.                                 break;
  97.                         }
  98.                         case 16: toHex(num,x); break;
  99.                        
  100.                        
  101.                 }
  102.         }

  103.         //下面这三个方法分别转换成相应的进制。
  104.         public static void toBin(int num,int x)
  105.         {
  106.                 System.out.print("您输入的"+x+"进制数的二进制形式是:");
  107.                 trans(num,1,1);
  108.         }
  109.         public static void toOct(int num,int x)
  110.         {
  111.                 System.out.print("您输入的"+x+"进制数的八进制形式是:");
  112.                 trans(num,7,3);
  113.         }
  114.         public static void toHex(int num,int x)
  115.         {
  116.                 System.out.print("您输入的"+x+"进制数的十六进制形式是:");
  117.                 trans(num,15,4);
  118.         }
  119.        
  120.        

  121.         //trans():上边三个进制转换函数调用这个方法就可以完成进制的转换。
  122.         public static void trans(int num, int base, int offset)
  123.         {
  124.                 if(num == 0)
  125.                 {
  126.                         System.out.println(0);
  127.                         return;
  128.                 }

  129.                 char[] chs = {'0','1','2','3',
  130.                                         '4','5','6','7',
  131.                                         '8','9','A','B',
  132.                                         'C','D','E','F'};

  133.                 char[] arr = new char[32];

  134.                 int pos = arr.length;

  135.                 while(num != 0)
  136.                 {
  137.                         int temp = num & base;
  138.                         arr[--pos] = chs[temp];
  139.                         num = num >>> offset;
  140.                 }

  141.                 for(int i = pos; i < arr.length; i++)
  142.                 {
  143.                         System.out.print(arr[i]);
  144.                 }
  145.                 System.out.println();
  146.                 System.out.println();
  147.         }

  148. }
复制代码
回复 使用道具 举报 1 0
阿温 发表于 2014-8-7 09:13
我要上榜!阳哥辛苦了:

给你公布出去,无法给满分是因为进制转换没有用自定义算法,而是调用的API。
  1. package cn.itcast.main;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;

  5. /**
  6. * @see 请用java编写代码实现如下功能:①让用户选择输入的数据格式(二进制、八进制、十进制、十六进制,输入错误时请给予友好提示)②让用户输入数据③让用户选择要转换成的进制单位④输出结果,并重复第①步。
  7. * 使用六个步骤完成:
  8. * 1.让用户选择输入的数据格式(二进制、八进制、十进制、十六进制,输入错误时请给予友好提示)
  9. * 2.让用户输入数据
  10. * 3.让用户选择要转换成的进制单位
  11. * 4.进制转换
  12. * 5.输出结果
  13. * 6.循环
  14. * @author weid
  15. *
  16. */

  17. public class Main
  18. {
  19.          /*
  20.          * 主函数:循环输入
  21.          */
  22.        
  23.         //使用公用静态输入流
  24.         static BufferedReader sysin=new BufferedReader(new InputStreamReader(System.in));
  25.        
  26.         //主函数
  27.         public static void main(String[] args) throws IOException
  28.         {
  29.                 //循环
  30.                 while(true)
  31.                 {
  32.                         convertNum();
  33.                 }

  34.         }
  35.        
  36.         //实现基本转化步骤
  37.         private static void convertNum() throws IOException
  38.         {
  39.                 //让用户选择输入的数据格式(二进制、八进制、十进制、十六进制,输入错误时请给予友好提示)
  40.                 int radixin=chooseRadix("输入");
  41.                 //让用户输入数据
  42.                 int num=inputNum(radixin);
  43.                 //让用户选择要转换成的进制单位
  44.                 int radixout=chooseRadix("输出");
  45.                 //进制转换
  46.                 String ans=convert(num,radixout);
  47.                 //输出结果
  48.                 System.out.println("结果为: "+ans);
  49.                 System.out.println();
  50.         }
  51.        

  52.         //选择进制
  53.         private static int chooseRadix(String form) throws IOException
  54.         {
  55.                 String s;
  56.                 System.out.println("请选择"+form+"数据格式:1.二进制;2.八进制;3.十进制;4.十六进制");
  57.                 s=sysin.readLine();
  58.                 while(!(s.equals("1")||s.equals("2")||s.equals("3")||s.equals("4")))
  59.                 {
  60.                         System.out.println("您输入的有误:请输入1,2,3,4中的一个");
  61.                         System.out.println("请选择"+form+"数据格式:1.二进制;2.八进制;3.十进制;4.十六进制");
  62.                         s=sysin.readLine();
  63.                 }
  64.                 switch (Integer.parseInt(s))
  65.                 {
  66.                 case 1:
  67.                         return 2;
  68.                
  69.                 case 2:
  70.                         return 8;

  71.                 case 3:
  72.                         return 10;
  73.                        
  74.                 case 4:
  75.                         return 16;
  76.                 default:
  77.                         return chooseRadix(s);
  78.                 }
  79.                
  80.         }
  81.        
  82.         //输入要转换的数字
  83.         private static int inputNum(int radix) throws IOException
  84.         {
  85.                 String s;
  86.                 int num=0;
  87.                 boolean flag=true;
  88.                 System.out.println("请输入要转换的数字");
  89.                 while(flag)
  90.                 {
  91.                         try
  92.                         {
  93.                                 s=sysin.readLine();
  94.                                 num=Integer.parseInt(s, radix);
  95.                                 flag=false;
  96.                         } catch (Exception e)
  97.                         {
  98.                                 System.out.println("输入有误请重新输入:");// TODO: handle exception
  99.                         }
  100.                 }
  101.                 return num;
  102.         }

  103.         //进制转换
  104.         private static String convert(int num, int radixout)
  105.         {
  106.                 switch(radixout)
  107.                 {
  108.                 case 2:
  109.                         return Integer.toBinaryString(num);
  110.                        
  111.                 case 8:
  112.                         return Integer.toOctalString(num);
  113.                        
  114.                 case 10:
  115.                         return Integer.toString(num);
  116.                
  117.                 case 16:
  118.                         return Integer.toHexString(num);
  119.                
  120.                 default:
  121.                         return null;
  122.                 }
  123.         }
  124. }
复制代码
回复 使用道具 举报
justin1258 发表于 2014-8-6 15:43
交题喽~~~支持大数转换哦~~

挺好:
  1. import java.util.Scanner;

  2. public class AryConvert {
  3.         public static void main(String... args) {
  4. //                test();
  5. //                testBig();
  6.                
  7.                 AryConvertor convertor = new AryConvertor();
  8.                 convertor.setSupportBigNumber(true);// 支持大数转换
  9.                
  10.                 Scanner scanner = new Scanner(System.in);
  11.                 while (true) {
  12.                         System.out
  13.                                         .println("enter source format: b(inary), o(ctonary), d(ecimal), h(exadecimal), or ex(it) to exit.");
  14.                         int sourceFormat = getFormat(scanner);

  15.                         System.out
  16.                                         .println("enter source number you want to convert, or ex(it) to exit.");
  17.                         String number = getNumber(scanner);

  18.                         System.out
  19.                                         .println("enter destination format: b(inary), o(ctonary), d(ecimal), h(exadecimal), or ex(it) to exit.");
  20.                         int destFormat = getFormat(scanner);

  21.                         convertor.setM(sourceFormat);
  22.                         convertor.setN(destFormat);
  23.                        
  24.                         try {
  25.                                 System.out.println("the converted number: "
  26.                                                 + convertor.convertToString(number));
  27.                                
  28.                                 System.out.println();
  29.                         } catch (Exception e) {
  30.                                 System.out.println(e.getMessage());
  31.                         }
  32.                 }
  33.         }
  34.        
  35.         private static String getNumber(Scanner scanner) {
  36.                 String number = "";
  37.                 while (scanner.hasNextLine()) {
  38.                         number = scanner.nextLine();
  39.                         if("ex".compareToIgnoreCase(number) == 0)
  40.                                 System.exit(0);
  41.                        
  42.                         if(!number.matches("[0-9a-f-A-Z]+"))
  43.                                 System.out.println("you entered a wrong number. please input again.");
  44.                         else {
  45.                                 return number;
  46.                         }
  47.                 }
  48.                 return number;
  49.         }
  50.        
  51.         private static int getFormat(Scanner scanner) {
  52.                 int format = 0;
  53.                 while (scanner.hasNextLine()) {
  54.                         String enter = scanner.nextLine();
  55.                         if("b".compareToIgnoreCase(enter) == 0)
  56.                                 return 2;
  57.                         else if("o".compareToIgnoreCase(enter) == 0)
  58.                                 return 8;
  59.                         else if("d".compareToIgnoreCase(enter) == 0)
  60.                                 return 10;
  61.                         else if("h".compareToIgnoreCase(enter) == 0)
  62.                                 return 16;
  63.                         else if ("ex".compareToIgnoreCase(enter) == 0)
  64.                                 System.exit(0);
  65.                         else
  66.                                 System.out.println("you entered a wrong format. please input again.");
  67.                 }
  68.                
  69.                 return format;
  70.         }

  71.         private static void test() {
  72.                 AryConvertor convertor = new AryConvertor();
  73.                 // 转二进制测试
  74.                 System.out.println("10->2:" + "5845->" + convertor.convertToString("5845"));// 10->2
  75.                
  76.                 convertor.setM(8);
  77.                 System.out.println("8->2:" + "5745->" + convertor.convertToString("5745"));// 8->2
  78.                
  79.                 convertor.setM(16);
  80.                 System.out.println("16->2:" + "12ef3a->" + convertor.convertToString("12ef3a"));// 16->2
  81.                
  82.                 // 转八进制
  83.                 convertor.setN(8);
  84.                
  85.                 System.out.println("10->8:" + "5845->" + convertor.convertToString("5845"));// 10->8
  86.                
  87.                 convertor.setM(2);
  88.                 System.out.println("2->8:" + "1011011010101->" + convertor.convertToString("1011011010101"));// 2->8
  89.                
  90.                 convertor.setM(16);
  91.                 System.out.println("16->8:" + "12ef3a->" + convertor.convertToString("12ef3a"));// 16->8
  92.                
  93.                 // 转十进制
  94.                 convertor.setN(10);
  95.                
  96.                 convertor.setM(8);
  97.                 System.out.println("8->10:" + "13325->" + convertor.convertToString("13325"));// 8->10
  98.                
  99.                 convertor.setM(2);
  100.                 System.out.println("2->10:" + "1011011010101->" + convertor.convertToString("1011011010101"));// 2->10
  101.                
  102.                 convertor.setM(16);
  103.                 System.out.println("16->10:" + "12ef3a->" + convertor.convertToString("12ef3a"));// 16->10
  104.                
  105.                 // 转十六进制
  106.                 convertor.setN(16);
  107.                
  108.                 convertor.setM(8);
  109.                 System.out.println("8->16:" + "13375->" + convertor.convertToString("13375"));// 8->16
  110.                
  111.                 convertor.setM(2);
  112.                 System.out.println("2->16:" + "1011011010101->" + convertor.convertToString("1011011010101"));// 2->16
  113.                
  114.                 convertor.setM(10);
  115.                 System.out.println("10->16:" + "1240890->" + convertor.convertToString("1240890"));// 10->16
  116.                
  117.                
  118.                 System.out.println();
  119.         }
  120.        
  121.         private static void testBig(){
  122.                 AryConvertor convertor = new AryConvertor();
  123.                 convertor.setSupportBigNumber(true);
  124.                 // 转二进制测试
  125.                 System.out.println("10->2:" + "5845->" + convertor.convertToString("5845"));// 10->2
  126.                
  127.                 convertor.setM(8);
  128.                 System.out.println("8->2:" + "5745->" + convertor.convertToString("5745"));// 8->2
  129.                
  130.                 convertor.setM(16);
  131.                 System.out.println("16->2:" + "12ef3a->" + convertor.convertToString("12ef3a"));// 16->2
  132.                
  133.                 // 转八进制
  134.                 convertor.setN(8);
  135.                
  136.                 System.out.println("10->8:" + "5845->" + convertor.convertToString("5845"));// 10->8
  137.                
  138.                 convertor.setM(2);
  139.                 System.out.println("2->8:" + "1011011010101->" + convertor.convertToString("1011011010101"));// 2->8
  140.                
  141.                 convertor.setM(16);
  142.                 System.out.println("16->8:" + "12ef3a->" + convertor.convertToString("12ef3a"));// 16->8
  143.                
  144.                 // 转十进制
  145.                 convertor.setN(10);
  146.                
  147.                 convertor.setM(8);
  148.                 System.out.println("8->10:" + "13325->" + convertor.convertToString("13325"));// 8->10
  149.                
  150.                 convertor.setM(2);
  151.                 System.out.println("2->10:" + "1011011010101->" + convertor.convertToString("1011011010101"));// 2->10
  152.                
  153.                 convertor.setM(16);
  154.                 System.out.println("16->10:" + "12ef3a->" + convertor.convertToString("12ef3a"));// 16->10
  155.                
  156.                 // 转十六进制
  157.                 convertor.setN(16);
  158.                
  159.                 convertor.setM(8);
  160.                 System.out.println("8->16:" + "13375->" + convertor.convertToString("13375"));// 8->16
  161.                
  162.                 convertor.setM(2);
  163.                 System.out.println("2->16:" + "1011011010101->" + convertor.convertToString("1011011010101"));// 2->16
  164.                
  165.                 convertor.setM(10);
  166.                 System.out.println("10->16:" + "1240890->" + convertor.convertToString("1240890"));// 10->16
  167.                
  168.                 System.out.println();
  169.         }
  170. }

  171. class AryConvertor{
  172.         private int M = 10; // 原始数据进制,默认为十进制
  173.         private int N = 2; // 转换数据进制,默认为二进制
  174.         private boolean supportBigNumber = false;//是否支持大数,默认不支持
  175.         private String bigNumberQuotient; // 转换大数时临时存储的商数
  176.        
  177.         public void setM(int M){ this.M = M;}
  178.         public void setN(int N){ this.N = N;}
  179.         public void setSupportBigNumber(boolean supportBigNumber){this.supportBigNumber = supportBigNumber;}
  180.        
  181.         public AryConvertor(){}
  182.         public AryConvertor(int M, int N){
  183.                 this.M = M;
  184.                 this.N = N;
  185.         }
  186.        
  187.         public String convertToString(String number) {
  188.                 boolean legal = true;
  189.                 if(this.M == 2){
  190.                         legal = number.matches("[0-1]+");
  191.                 }else if (this.M == 8) {
  192.                         legal = number.matches("[0-7]+");
  193.                 }else if (this.M == 10) {
  194.                         legal = number.matches("[0-9]+");
  195.                 }else if (this.M == 16) {
  196.                         legal = number.matches("[0-9a-fA-F]+");
  197.                 }
  198.                 if(!legal)
  199.                         throw new NumberFormatException("argument number: " + number + " is Illegal");
  200.                
  201.                 if (this.M == this.N) // 如果进制相同,不转换直接返回
  202.                         return number;
  203.                
  204.                 return supportBigNumber ? convertBig(number) : convert(number);
  205.         }
  206.        
  207.         /**
  208.          * 进制转换,不支持大数
  209.          * @param number
  210.          * @return
  211.          */
  212.         private String convert(String number) {
  213.                 int tmp = 0;
  214.                 for (int i = 0; i < number.length(); i++) {
  215.                         tmp = tmp * M + getNumFromChar(number.charAt(i));
  216.                 }
  217.                
  218.                 int remainder = 0;// 余数
  219.                 int quotient = tmp; // 商
  220.                 StringBuffer result = new StringBuffer();
  221.                 do {
  222.                         remainder = quotient % N;
  223.                         result.insert(0, getCharFromNum(remainder));
  224.                         quotient = quotient / N;
  225.                 } while (quotient != 0);
  226.                
  227.                 return result.toString();
  228.         }
  229.        
  230.         /**
  231.          * 进制转换,支持大数
  232.          * @param bigNum
  233.          * @return
  234.          */
  235.         private String convertBig(String bigNum) {
  236.                 bigNumberQuotient = bigNum;
  237.                 StringBuffer result = new StringBuffer();
  238.                
  239.                 while (bigNumberQuotient.length() > 0) {
  240.                         int remainder = getRemainderFromBigNum(bigNumberQuotient);
  241.                         result.insert(0, getCharFromNum(remainder));
  242.                 }
  243.                
  244.                 return result.toString();
  245.         }
  246.        
  247.         /**
  248.          * 从一个大数字符串中获取除以N的余数
  249.          * @param bigNum
  250.          * @return
  251.          */
  252.         private int getRemainderFromBigNum(String bigNum) {
  253. //                StringBuffer dividend = new StringBuffer(bigNum);// 字符串形式的被除数
  254.                
  255.                 StringBuffer quotient = new StringBuffer();
  256.                 int remainder = 0;
  257.                 for (int i = 0; i < bigNum.length(); i++) {
  258.                         int tmp = getNumFromChar(bigNum.charAt(i));
  259.                         remainder = remainder * M + tmp;
  260.                         quotient.append(getCharFromNum(remainder / N));
  261.                         remainder = remainder % N;
  262.                 }
  263.                
  264.                 while (quotient.length() > 0 && quotient.charAt(0) == '0') {
  265.                         quotient.deleteCharAt(0);
  266.                 }
  267.                
  268.                 bigNumberQuotient = quotient.toString();
  269.                
  270.                 return remainder;
  271.         }
  272.        
  273.         /***
  274.          * 根据传进来的字符串1-9,a-z,A-Z转换成对应的十进制数
  275.          * @param cnum
  276.          * @return
  277.          */
  278.         private static int getNumFromChar(char cnum) {
  279.                 if(cnum >= '0' && cnum <= '9')
  280.                         return cnum - '0';
  281.                 else if (cnum >= 'a' && cnum <= 'f')
  282.                         return cnum - 'a' + 10;
  283.                 else if (cnum >= 'A' && cnum <= 'F')
  284.                         return cnum - 'A' + 10;
  285.                 else
  286.                         throw new NumberFormatException("argument cnum: " + cnum + " is Illegal");
  287.         }
  288.        
  289.         /**
  290.          * 根据传进来的数字0-15转换成相应的字符表示
  291.          * @param num
  292.          * @return
  293.          */
  294.         private static char getCharFromNum(int num) {
  295.                 if(num >= 0 && num <= 9)
  296.                         return (char)(num + '0');
  297.                 else if (num >= 10 && num <= 15)
  298.                         return (char)(num - 10 + 'a');
  299.                 else
  300.                         throw new IllegalArgumentException("argument num: " + num + " is Illegal");
  301.         }

  302. }
复制代码
回复 使用道具 举报

挺好:
  1. package com.itheima;

  2. import java.awt.*;

  3. import java.awt.event.*;

  4. import javax.swing.*;

  5. public class Test2 extends JFrame implements ActionListener {

  6. JTextField txtDec;

  7. JTextField txtBin;

  8. JTextField txtOct;

  9. JTextField txtHex;



  10. public Test2(){

  11. super("十进制整数转换");

  12. txtDec = new JTextField(15);

  13. txtBin = new JTextField(15);

  14. txtOct = new JTextField(15);

  15. txtHex = new JTextField(15);

  16. txtBin.setEditable(false);

  17. txtOct.setEditable(false);

  18. txtHex.setEditable(false);

  19. this.setLayout(new FlowLayout());

  20. this.add(new JLabel("    十进制"));

  21. this.add(txtDec);

  22. this.add(new JLabel("    二进制"));

  23. this.add(txtBin);

  24. this.add(new JLabel("    八进制"));

  25. this.add(txtOct);

  26. this.add(new JLabel("十六进制"));

  27. this.add(txtHex);

  28. txtDec.addActionListener(this);

  29. this.setSize(250, 150);

  30. this.setResizable(false);

  31. this.setVisible(true);

  32. }



  33. public static void main(String[] args) {

  34. new Test2();

  35. }

  36. public void actionPerformed(ActionEvent e) {

  37. JTextField txt = (JTextField)e.getSource();

  38. if(txt.getText() == null || txt.getText().trim().equals("")){

  39. JOptionPane.showMessageDialog(this, "十进制数不能为空");

  40. return;

  41. }

  42. int num;

  43. try{

  44. num = Integer.parseInt(txt.getText());

  45. if(num < 0){

  46. num *= -1;

  47. txtBin.setText("-" + Convert.format(num, 2));

  48. txtOct.setText("-" + Convert.format(num, 8));

  49. txtHex.setText("-" + Convert.format(num, 16));

  50. }

  51. else{

  52. txtBin.setText(Convert.format(num, 2));

  53. txtOct.setText(Convert.format(num, 8));

  54. txtHex.setText(Convert.format(num, 16));

  55. }

  56. }

  57. catch(Exception ex){

  58. JOptionPane.showMessageDialog(this, "十进制数错误");

  59. return;

  60. }

  61. }

  62. }

  63. class Convert{

  64. private static String[] bins = {"0", "1"};

  65. private static String[] octs = {"0", "1", "2", "3", "4", "5", "6", "7"};

  66. private static String[] hexs = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};



  67. public static String format(int num, int r){

  68. StringBuffer buff = new StringBuffer();

  69. if(r == 2){

  70. while(num > 0){

  71. buff.append(bins[num%r]);

  72. num /= r;

  73. }

  74. }

  75. else if(r == 8){

  76. while(num > 0){

  77. buff.append(octs[num%r]);

  78. num /= r;

  79. }

  80. }

  81. else if(r == 16){

  82. while(num > 0){

  83. buff.append(hexs[num%r]);

  84. num /= r;

  85. }

  86. }

  87. buff.reverse();

  88. return buff.toString();

  89. }

  90. }
复制代码
回复 使用道具 举报
huoshao008 发表于 2014-8-7 20:28
满足基本要求,不足之处请务必指正谢谢.

谢谢老师,下次一定注意.
回复 使用道具 举报
就业指导-王震阳老师 发表于 2014-8-8 22:02
给你公布出去,无法给满分是因为进制转换没有用自定义算法,而是调用的API。
...

恩,知道了,谢谢阳哥
回复 使用道具 举报
杜工 来自手机 高级黑马 2014-8-9 05:59:22
96#
现在还搞不定。
回复 使用道具 举报
﹑淼 来自手机 中级黑马 2014-8-9 12:19:06
97#
请放开你手中的题
回复 使用道具 举报

嗯嗯,知道了。老师,谢谢。
回复 使用道具 举报
左脑想你 来自手机 中级黑马 2014-8-9 20:43:05
99#
现在看不晚吧
回复 使用道具 举报
看一下来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马