这道题是day5的思考题。我用记事本把题目的代码自己敲了一边。可是得出的结果总是报错。。求高手解答哪儿出错了。。- /*
- 某个公司采用公用电话传递数据信息,数据是小于等于8位的整数,为了确保安全,
- 在传递过程中需要加密,加密规则如下:
- 首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
- 最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,
- 然后,把加密后的结果在控制台打印出来。
- 分析:
- A:首先这个数字要是小于等于8位的整数,因此它要大于0和小于99999999.
- B:假设该数为123456,那么倒序后要成为654321,每位加5后是 11 10 9 8 7 6,再除以10的余数代替为109876.首尾互换后为609871.打印出来就是个加密的数
- */
- import java.util.Scanner;
- public class Test{
- public static void main(String[]args){
- Scnner sc=new Scanner(System.in);//封装键盘录入数据
- System.out.println("请输入一个小于8位数的正整数");
- int number=sc.nextInt();//获取键盘录入的数据
- int index=0;//初始化索引值为0
- int[]arr=new int[8];//定义一个int型的数组取名为arr,将该数组设置为最多有8个元素的数组。
- if(number<=0||number>99999999){
- System.out.println("您输入的数字有误,请重新输入");
- }//排除输入错误的选项
- //将键盘录入的数字调用到数组中,并实现首尾调序。
- while(number>0){
- arr[index]=number%10;//arr[0]=6,arr[1]=5,arr[2]=4,arr[3]=3,arr[4]=2,arr[5]=1,假设number=123456的时候
- number/=10;//number=12345,number=1234,number=123,number=12,number=1,number=0,后跳出while循环
- index++;//index=1,index=2,index=3,index=4,index=5,index=6,
- }
- //遍历调序后的数组,并输出。
- for(int x=0;x<index;x++){
- System.out.print(arr[x]);
- }
- System.out.println();
- //将数组中的元素每位加5,再用和除以10的余数代替该数字
- for(int x=0;x<index;x++){
- arr[x]+=5;//对每位元素进行加5
- arr[x]%=10;//对所加以后的元素进行除以10然后用其余数代替原来的数
- }
- //再对现在的数组遍历输出
- for(int x=0;x<index;x++){
- System.out.print(arr[x]);
- }
- System.out.println();
- //将所得数组的首位和末位互换。
- int temp=arr[0];
- arr[0]=arr[index-1];
- arr[index-1]=temp;
- for(int x=0;x<index;x++){
- System.out.print(arr[x]);
- }
- System.out.println("您加密后的数字为"+arr[x]);
- }
- }
复制代码
一运行就这样
|
|