为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决数组的空间不足的问题

如何解决数组的空间不足的问题

GCT1015 2019-04-26 22:15:23
在一个进制转换的问题上卡了很久,十六进制转八进制,我是想先将十六进制转换成十进制,再将十进制转换成八进制。十六进制转十进制我可以很好实现,就是将字符串逐一取出求出权值就行。问题在十进制转八进制上。因为在数学上,十进制转八进制就是该数求余再倒序,问题就出在这。为实现将数倒序,我得先将数放在数组里,再将数组进行逆向输出。可是数组是创建时就初始化好空间大小的,当所转换的数非常大时数组都无法满足时就错了,想请问是否有更好的方法解决?或者当数组的使用遇到空间上的问题是有没有什么好的处置方法?求教~~~以下献上十六进制转八进制代码(请大家对我的代码多多指正,初学者比较生疏,谢谢~)://多次运算十六进制转八进制 import java.util.*; public class BASIC_12_3_3 {     public static void main(String args[]){         int n,tag=0;         long sum=0,b,tmp=1,k,c;          String H[] = new String[11];         Scanner sc = new Scanner(System.in);         n = sc.nextInt();         for(int i=0;i < n;i++){             H[i] = sc.next();         }         for(int z=0;z < n;z++){             int i = 0;             //十六进制转成十进制             for(int j=H[z].length()-1;j >= 0;j--){                 b = H[z].charAt(j);                 if(b>='0' && b<='9'){                     b = (b - '0') * tmp;                     sum = sum + b;                     tmp = tmp * 16;                 }                 else if(b>='A' && b<='F'){                     b = (b - 'A' + 10) * tmp;                     sum = sum + b;                     tmp = tmp * 16;                 }             }             //此处得出该数的十进制sum,以下是十进制转八进制             if(sum>=0 && sum<8){                 System.out.print(sum);             }             else if(sum >= 8){                 k = sum;                 long list[] = new long[20];//此处用数组进行逆序输出,但容易出现数据溢出                 while(k != 0){                     c = k % 8;                     list[i] = c;                     k = k / 8;                     i ++;                 }                 if(k == 0){                     list[i] = k;                 }
查看完整描述

2 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

Java正常使用中List使用的较多,是自动扩容的动态数组。


查看完整回答
反对 回复 2019-05-16
  • 2 回答
  • 0 关注
  • 696 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号