一维数组的高级用法

今天在《数据结构(java篇)》中看到的一个数组的高级应用,想想当初看数组的时候居然没有想到数组能这么用;现在把代码给出来,由于没有书中提到的ConSoleReader,所以我把代码改了一下,用System.in来接受用户的输入。
+-----------------------------------------Array01.java Code-------------------------------------------+
/**
  *title:一维数组的高级用法
  *intent:通过一维数组来弥补基本数据类型int等的不足
  *cause:由于java中类型的限制,int的范围是-2,147,483,648 到 2,147,483,647 ,有32位
  *但是当计算结果超出了该范围,程序就回出错,所以我们这里用数组来弥补这一点。
  *explain:先产生一个大小为40的一维数组Data,每当Data[i]的大小大于10就向前面进一位。
  */
import java.io.*;
public class Array01

 public static void main(String[] args)
     throws IOException
 {
  InputStream in;
  int Data[]=new int[40];    //产生大小为40的一维数组
  int Digit;                            //数据位数
  int i,j,r,k;                           //循环记数变量
  int n=0;                            //用户输入
  int index;
  for(i=1;i<40;i++)
      Data[i]=0;                   //将数组初值设为0
  Data[0]=1;                     //设数组第一位为1;
  Data[1]=1;                    //设数组第二位为1;
  Digit=1;                       //设数据位为1
  System.out.println("Enter a number");
  in=System.in;              //读取用户输入
  n=in.read()-48;
  index=in.available();
  while(index>2){
   n=n*10+(in.read()-48);
   if(n>35){
   System.out.println("sorry,the number is to large");
   System.exit(1);
   }
   index--;
  }
   for(j=1;j<Digit+1;j++)
       Data[j]*=i;             //数组中的运算
   for(j=1;j<Digit+1;j++){
    if(Data[j]>10){
       for(r=1;r<Digit+1;r++){
       if(Data[Digit]>10)
        Digit++;                         //当数组中的元素值大于10时,位数加1
    Data[r+1]+=Data[r]/10;   //前一位元素=前一位元素+此位元素值除以10
    Data[r]=Data[r]%10;      //此位元素值=此位元素值除以10取余数
    }
      }
  }
  System.out.print(i+"!=");
  for(k=Digit;k>0;k--)
      System.out.print(Data[k]);
  System.out.println("");
  }
 }
}
+----------------------------------------------End---------------------------------------------------------------------+
总结一下,这里的重点并不是上面的代码,而是一种思路。人们说学习程序设计的关键就是看人家的代码,我觉得这句话说的很有道理,同一种语言,同一个问题,写出来的解决方法有很多种,但是我们的目的是写出高效的代码,而不是仅仅停留在能解决问题就行了。如果是一开始就学习OOP,就更要注意这一点,由于对程序底层不太了解,很难写出高效的代码,所以我建议在学习OOP的同时多看看数据结构,算法以及编译原理,毕竟代码的效率与编译器有很大的关系。总之一句话:地基不牢,房子是盖不高的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值