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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

顶贴,领题
回复 使用道具 举报
我来领题看下。
回复 使用道具 举报
交作业了

~(`G3(]N5W6IRJK~IC$V%]3.png (8.47 KB, 下载次数: 6)

~(`G3(]N5W6IRJK~IC$V%]3.png

demo.zip

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

评分

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

查看全部评分

回复 使用道具 举报
  1. package cn.yangge.day1.demo;

  2. import java.util.InputMismatchException;
  3. import java.util.Scanner;

  4. public class Demo_20 {
  5.         public static void main(String[] args) {
  6.                 int x, y, z;
  7.                 boolean flag = true;

  8.                 while (flag) {
  9.                         System.out.println("请确定你输入的数据是什么进制的(2:二进制,8:八进制,10:十进制,16:十六进制):");
  10.                         x = input();
  11.                         x = sure(x);
  12.                         System.out.println("请输入你需要转换的数据:");
  13.                         y = input(x);
  14.                         System.out.println("请确定你需要转换的进制(2:二进制,8:八进制,10:十进制,16:十六进制):");
  15.                         z = input();
  16.                         z = sure(z);
  17.                         change(x, y, z);
  18.                         System.out.println("您是否想进行下一次数据转换?是请输入:yes,否则输入:no");
  19.                         flag = isAgain();
  20.                         System.out.println();
  21.                 }
  22.         }

  23.         private static boolean isAgain() {
  24.                 // TODO 自动生成的方法存根
  25.                 Scanner s = new Scanner(System.in);
  26.                 String str = s.next();
  27.                 if (str.equals("yes"))
  28.                         return true;
  29.                 else if (str.equals("no"))
  30.                         return false;
  31.                 else {
  32.                         System.out.println("您输入的格式不正确,请输入yes或者是no。");
  33.                         isAgain();
  34.                         return true;
  35.                 }
  36.         }

  37.         private static void change(int x, int y, int z) {
  38.                 // TODO 自动生成的方法存根
  39.                 switch (z) {
  40.                 case 2:
  41.                         toBin(x, y);
  42.                         break;
  43.                 case 8:
  44.                         toOct(x, y);
  45.                         break;
  46.                 case 10:
  47.                         System.out.println("您输入的" + x + "进制数的十进制形式是:" + y);
  48.                         break;
  49.                 case 16:
  50.                         toHex(x, y);
  51.                         break;
  52.                 }
  53.         }

  54.         private static void toHex(int x, int y) {// 转十六进制
  55.                 // TODO 自动生成的方法存根
  56.                 System.out.print("您输入的" + x + "进制数的十六进制形式是:");
  57.                 trans(y, 15, 4);
  58.         }

  59.         private static void toOct(int x, int y) {// 转八进制
  60.                 // TODO 自动生成的方法存根
  61.                 System.out.print("您输入的" + x + "进制数的八进制形式是:");
  62.                 trans(y, 7, 3);
  63.         }

  64.         private static void toBin(int x, int y) {// 转二进制
  65.                 // TODO 自动生成的方法存根
  66.                 System.out.print("您输入的" + x + "进制数的二进制形式是:");
  67.                 trans(y, 1, 1);
  68.         }

  69.         private static void trans(int y, int base, int offset) {
  70.                 // TODO 自动生成的方法存根
  71.                 if (y == 0) {
  72.                         System.out.println("0");
  73.                 }
  74.                 char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
  75.                                 'B', 'C', 'D', 'E', 'F' };// 定义一个对应关系表
  76.                 char[] arr = new char[32];
  77.                 int pos = arr.length;

  78.                 while (y != 0) {
  79.                         int temp = y & base;
  80.                         arr[--pos] = chs[temp];
  81.                         y = y >>> offset;
  82.                 }

  83.                 for (int i = pos; i < arr.length; i++) {
  84.                         System.out.print(arr[i]);
  85.                 }
  86.                 System.out.println();
  87.         }

  88.         private static int input(int x) {
  89.                 // TODO 自动生成的方法存根
  90.                 Scanner sc = new Scanner(System.in);
  91.                 String s = sc.next();
  92.                 int temp;
  93.                 try {
  94.                         temp = Integer.parseInt(s, x);
  95.                 } catch (NumberFormatException e) {
  96.                         System.out.println("请输入正确的进制类型:");
  97.                         temp = input(x);
  98.                 }
  99.                 return temp;
  100.         }

  101.         private static int sure(int x) {// 判断输入的数字是否为进制类型
  102.                 // TODO 自动生成的方法存根
  103.                 switch (x) {
  104.                 case 2:
  105.                         return x;
  106.                 case 8:
  107.                         return x;
  108.                 case 10:
  109.                         return x;
  110.                 case 16:
  111.                         return x;
  112.                 default: {
  113.                         System.out.println("请输入正确的进制类型,你只能输入2,8,10或者16。请重新输入::");
  114.                         x = input();
  115.                         x = sure(x);
  116.                         return x;
  117.                 }
  118.                 }
  119.         }

  120.         private static int input() {// 接收用户输入的数据,如果不为整数,则抛出异常
  121.                 // TODO 自动生成的方法存根
  122.                 Scanner sc = new Scanner(System.in);
  123.                 String s = sc.next();
  124.                 int temp;
  125.                 try {
  126.                         temp = Integer.parseInt(s);
  127.                 } catch (NumberFormatException e) {
  128.                         System.out.println("输入数据类型错误,必须为整数");
  129.                         return temp = input();
  130.                 }
  131.                 return temp;
  132.         }

  133. }
复制代码

不错。
回复 使用道具 举报
老规矩,领题:lol
回复 使用道具 举报
:)领题学习
回复 使用道具 举报
回帖领题,支持阳哥。。。。
回复 使用道具 举报
小黑领题。
回复 使用道具 举报
回帖领题
回复 使用道具 举报
阳哥我来领题了!
回复 使用道具 举报
提米特 发表于 2014-12-15 17:23
阳哥我来领题了!

好的,欢迎来领题。
回复 使用道具 举报
阳哥,我先把题领了,有些暂时不会的后面学到了会慢慢补上。
回复 使用道具 举报
Little_Pea 发表于 2014-12-16 18:14
阳哥,我先把题领了,有些暂时不会的后面学到了会慢慢补上。

好的,加油。
回复 使用道具 举报

阳哥,第八期的题。这两天有点忙,进度有点慢。 劳烦阳哥查看。

技术分活动第八期.rar

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

评分

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

查看全部评分

回复 使用道具 举报
回复试试能不能完成
回复 使用道具 举报
回帖领题
回复 使用道具 举报
领题了。。。
回复 使用道具 举报

这么晚了还领题,也真心不容易呀。
回复 使用道具 举报
回帖来做题
回复 使用道具 举报
领题··············
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马