黑马程序员技术交流社区
标题:
运行错误,求解惑……
[打印本页]
作者:
高亮亮
时间:
2013-12-10 07:58
标题:
运行错误,求解惑……
本帖最后由 高亮亮 于 2013-12-10 20:51 编辑
/*
需求:小于8的整数。先倒序,然后每位数字加上5,在用和除10的余数代替该数字。最后将第一位最后一位互换。
请任意指定一个小雨8的整数,并将加密后结果打印。
思路:
用数组存储每位上的数字,并倒序。
每位数字进行加,取模操作,并更新数组中元素。
对数组中首,尾元素互换。
遍历数组元素输出。
*/
import java.util.*;
class JiaMi
{
public static void jiaMi(int num)
{//用数组存储每位上的数字,并倒序。
int[] arr=new int[8];
int index=0;
System.out.print("您输入的原始密码为:"+num);
while (num>0)
{
arr[index++]=num%10;
//arr[index]=num%10; //为什么这里如果我将索引里面做成自加,在输入8位
//index+=1; <span class="Apple-tab-span" style="white-space:pre"> </span>//数是会报索引越界的错误?他们不应该完全是一个意思?
num/=10;
}//每位数字进行加,取模操作,并更新数组中元素。
for (int i=0;i<index;i++)
{
arr[i]+=5;
arr[i]%=10;
}//对数组中首,尾元素互换。
arr[0]=arr[0]^arr[index-1];
arr[index-1]=arr[0]^arr[index-1];
arr[0]=arr[0]^arr[index-1];
System.out.print("\n加密后密码为:");
for (int i=0;i<index;i++)//遍历数组元素并输出。
{
System.out.print(arr[i]);
}
}
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
while (true)
{
System.out.println("请输入原始小于八位密码:");
int num=in.nextInt();
jiaMi(num);
System.out.println("\n"+"是否继续?任意键继续,1:退出");
int x=in.nextInt();
if (x==1)
break;
continue;
}
}
}
复制代码
==================================无视我======================================
如上面的代码,在循环里面录入这个不确定的数组时候,为什么我把i自加放入索引里面,在编译过后,运行时输入8位数就会报索引越界呢???
==================================无视我======================================
感谢给位……果然,我晚上把里面的那个class删了,重编译,就可以了……不过我之前也是编译在运行啊,怎么会报错呢???java抽风了……估计。
作者:
高亮亮
时间:
2013-12-10 08:02
21,22行那里
作者:
翼展哈哈
时间:
2013-12-10 08:42
楼主您好
我将您的代码没有任何修改,在编译器上运行了一遍,运行时并没有报错。
我把我运行的结果贴给您吧:
请输入原始小于八位密码:
12345678
您输入的原始密码为:12345678
加密后密码为:62109873
是否继续?任意键继续,1:退出
如果楼主运行时还是会出现错误,建议重启一下编译器或者删除原来的源代码,再写一个同样的源代码,再编译运行一下看看会怎样。
希望可以帮到楼主,有什么说的不对的,欢迎批评指正!
作者:
范二青年
时间:
2013-12-10 12:28
楼主你好,首先从题目来看,是小于8的整数还是小于8位的整数?这个问题比较模糊
姑且算作小于8位的整数吧
如果我输入1234567按照题目先倒序,然后每位数字加上5,在用和除10的余数代替该数字
第一步 倒序 7654321
第二部 每位数字加5 12 11 10 9 8 7 6
第三部 在用和除10的余数代替该数字 2 1 0 9 8 7 6
但是你的结果输出的是6109872
这是我的理解 你可以看一下 还有就是你说报错的问题 我想楼上是正解
作者:
笑脸不在
时间:
2013-12-10 17:44
回楼主:复制代码运行时没问题:结果可预想的一致;此点同意3楼哈
楼上请看楼主的需求:最后将首位和最后一位互换位置
想补充的是:楼主的需求是小于八位的整数,那么在定义存储数组的时候就应该定义一个7位的数组
int[] arr=new int[7];//将8改成7
望楼主采纳
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2