疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

在java中使用数组进行模拟加密


 

  某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的。

  加密规则是每位数字都加上5,然后再用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

  编写一个程序,用于接收一个四位的整数,并且打印输出加密后的数。

  这道题原本没有要求必须使用数组,所以我最先是使用一种翻译题目的方法完成这道题的,代码如下:

  public static void main(String[] args) {

  System.out.println("请输入一个4位数字:");

  Scanner sc=new Scanner(System.in);

  int n=0;

  int i=0;

  while(true){

  n=sc.nextInt();

  if(n<999||n>10000){

  System.out.println("你输入的数字不合法!请重新输入");

  }else{

  break;

  }

  }

  int gewei=n%10;

  n/=10;

  int shiwei=n%10;

  n/=10;

  int baiwei=n%10;

  n/=10;

  gewei+=5;

  shiwei+=5;

  baiwei+=5;

  n+=5;

  int a=gewei%10;

  int b=shiwei%10;

  int c=baiwei%10;

  int d=n%10;

  int out=d*1000+c*100+b*10+a;

  System.out.println("加密后的数字是:"+out);

  }

  做完以后我记起我刚刚学的数组,想尝试一下用数组的方式去完成者道题,尝试过多次以后实现,代码如下:

  public static void main(String[] args) {

  System.out.println("请输入一个4位数字:");

  Scanner sc=new Scanner(System.in);

  int n=0;

  int a=0;

  while(true){

  n=sc.nextInt();

  if(n<999||n>10000){

  System.out.println("你输入的数字不合法!请重新输入");

  }else{break;}

  }

  int[] m=new int[4];

  for(int i=0;i

  m[i]=n%10;

  n/=10;

  m[i]+=5;

  m[i]%=10;

  System.out.print(m[i]);

  }

  }

  完成之后我发现这道题用数组完成核心的代码居然只有一个for循环,而且题目中的4位数这个条件可以轻易的改为5位6位......而不需要过多的更改代码。