码迷,mamicode.com
首页 > 编程语言 > 详细

java:数据结构(二)栈的应用(进制转换)

时间:2019-02-16 21:57:25      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:span   static   star   进制转换   orm   arc   十六   stack   总结   

说到进制转换,java已经封装了基本的方法,在竞赛中使用封装的方法自然能节省大量时间

另一位仁兄介绍的封装好的方法:

https://blog.csdn.net/m0_37961948/article/details/80438113

如果不想看上面的全部,我总结了两条基本方放,记下就可以随意转化:

技术图片

技术图片

掌握这两个方法就可以实现任意进制的随便转化

 (这个是针对竞赛,如果是需要学习底层,大家还在看api研究吧)

再看一个水题:

题目描述

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。

示例1

输入

0xA

输出

10

 由于本题目简单,所以只给出代码:

 1 import java.util.Scanner;
 2 import java.util.*;
 3 
 4     public class Main{
 5         public static void main(String args[]){
 6             Scanner in = new Scanner(System.in);
 7         while (in.hasNext()) {
 8             String a=in.next();
 9             char[] p=a.toCharArray();
10             a=String.valueOf(Arrays.copyOfRange(p,2,p.length));
11             System.out.println(Integer.parseInt(a, 16));
12             }
13         }
14     }

后面就是靠栈实现任意进制不使用已经封装好的方法:(栈使用的是我自己写的)

 1    /**
 2      * 进制转换
 3      * 算法设计:先将其他进制统一转为10进制,再利用取余法
 4      * 将10进制转为其他进制
 5      * @param n  需要转化的数
 6      * @param n1 需要转化数的进制
 7      * @param n2 转化后的进制
 8      * @return 转换后的数
 9      */
10     static String systemTransformation(String n, int n1, int n2) {
11         MyArraysStack<Character> e=new MyArraysStack<Character>();
12         char[] a=new char[]{‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};
13         char[] b=n.toCharArray();
14         int bNumber=0,t=0;
15         //[start]将n1进制转为10进制
16         for (char p:b){
17             e.push(p);
18         }
19         while (!e.isEmpty()){
20             char temp=e.pop();
21             bNumber+= Arrays.binarySearch(a,temp)*Math.pow(n1,t);
22             t++;
23         }
24         //[end]
25         //[start]  将10进制转为n2进制
26         StringBuilder builder=new StringBuilder();
27         while (bNumber>0){
28             e.push(a[bNumber%n2]);
29             bNumber/=n2;
30         }
31         while (!e.isEmpty()) {
32             builder.append(e.pop());
33         }
34         //[end]
35         String str;
36         str=builder.toString();
37         return str;
38     }
* 算法设计:先将其他进制统一转为10进制,再利用取余法
* 将10进制转为其他进制

java:数据结构(二)栈的应用(进制转换)

标签:span   static   star   进制转换   orm   arc   十六   stack   总结   

原文地址:https://www.cnblogs.com/lzy321/p/10388131.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!