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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这道题是day5的思考题。我用记事本把题目的代码自己敲了一边。可是得出的结果总是报错。。求高手解答哪儿出错了。。
  1. /*
  2. 某个公司采用公用电话传递数据信息,数据是小于等于8位的整数,为了确保安全,
  3.         在传递过程中需要加密,加密规则如下:
  4.                 首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
  5.                 最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,
  6.                 然后,把加密后的结果在控制台打印出来。

  7.                 分析:
  8.                         A:首先这个数字要是小于等于8位的整数,因此它要大于0和小于99999999.
  9.                         B:假设该数为123456,那么倒序后要成为654321,每位加5后是 11 10 9 8 7 6,再除以10的余数代替为109876.首尾互换后为609871.打印出来就是个加密的数
  10. */
  11. import java.util.Scanner;
  12. public class Test{
  13.         public static void main(String[]args){
  14.         Scnner sc=new Scanner(System.in);//封装键盘录入数据
  15.         System.out.println("请输入一个小于8位数的正整数");
  16.         int number=sc.nextInt();//获取键盘录入的数据
  17.         int index=0;//初始化索引值为0
  18.         int[]arr=new int[8];//定义一个int型的数组取名为arr,将该数组设置为最多有8个元素的数组。
  19.         if(number<=0||number>99999999){
  20.         System.out.println("您输入的数字有误,请重新输入");
  21.                                        }//排除输入错误的选项
  22.         //将键盘录入的数字调用到数组中,并实现首尾调序。
  23.         while(number>0){
  24.                 arr[index]=number%10;//arr[0]=6,arr[1]=5,arr[2]=4,arr[3]=3,arr[4]=2,arr[5]=1,假设number=123456的时候
  25.                 number/=10;//number=12345,number=1234,number=123,number=12,number=1,number=0,后跳出while循环
  26.                 index++;//index=1,index=2,index=3,index=4,index=5,index=6,
  27.                         }
  28.         //遍历调序后的数组,并输出。
  29.         for(int x=0;x<index;x++){
  30.                 System.out.print(arr[x]);
  31.                                 }
  32.                 System.out.println();
  33.         //将数组中的元素每位加5,再用和除以10的余数代替该数字
  34.         for(int x=0;x<index;x++){
  35.                 arr[x]+=5;//对每位元素进行加5
  36.                 arr[x]%=10;//对所加以后的元素进行除以10然后用其余数代替原来的数
  37.                                 }
  38.         //再对现在的数组遍历输出
  39.         for(int x=0;x<index;x++){
  40.                 System.out.print(arr[x]);
  41.                                 }
  42.                 System.out.println();
  43.         //将所得数组的首位和末位互换。
  44.         int temp=arr[0];
  45.         arr[0]=arr[index-1];
  46.         arr[index-1]=temp;
  47.         for(int x=0;x<index;x++){
  48.                 System.out.print(arr[x]);
  49.         }
  50.         System.out.println("您加密后的数字为"+arr[x]);
  51. }
  52. }
复制代码

一运行就这样

9 个回复

倒序浏览
妈个鸡的。。我真是超级粗心。用了两个小时用记事本写的代码。总是容易中英文符号切换错误。。30行的错误原来是英文的(  )被我打成了中文( )。。。
还有最后一句话输出语句是不能调用arr[x]的到输出语句里去的。因为这个数组不是一个数,而是自己包含了输出语句的数组。只能直接调用。。

点评

谢谢师兄指点。以后就用eclipse或者editplus了。。  发表于 2015-3-30 23:45
arr打不了是因为你的x是局部变量吧? PS:手打代码建议使用EditPlus编辑器,有语法加亮功能,方便查错,别用记事本  发表于 2015-3-30 20:40
回复 使用道具 举报
每天查错。每天自己改一改。。。养成细心的好习惯
回复 使用道具 举报
打错一个马步5分钟         
回复 使用道具 举报
Grady 发表于 2015-3-30 00:18
打错一个马步5分钟

:dizzy:看的头都晕了。。。
回复 使用道具 举报
楼主厉害啊
回复 使用道具 举报

慢慢练习代码速度与准确率中
回复 使用道具 举报
今天把内容又写到CSDN博客里咯。没出错哈哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马