java – 根据模式切换int数组中的数字
发布时间:2020-12-15 05:13:46 所属栏目:Java 来源:网络整理
导读:我一直在扫描互联网,试图为这个简单的程序提出一个解决方案,基本上用户输入数字(电话号码)并根据以下规则更改每个数字: 0→(变为)5,1→9,2→8,3,4,4→6,5→0,6→4,7→3,8→2,9→1. 所以7784321600的数量变为3326789455. 我将用户输入作为String,将其转换为i
我一直在扫描互联网,试图为这个简单的程序提出一个解决方案,基本上用户输入数字(电话号码)并根据以下规则更改每个数字:
0→(变为)5,1→9,2→8,3,4,4→6,5→0,6→4,7→3,8→2,9→1. 所以7784321600的数量变为3326789455. 我将用户输入作为String,将其转换为int数组但是当我尝试交换时,我不能让它像我希望的那样工作. 我试图用以下方式交换值: for (int i = 0; i < input.length(); i++) { if (nrArray[i] == 0) { // 0 becomes 5 int temp0[] = { 5 }; nrArray[i] = nrArray[i] + temp0[i]; temp0[i] = nrArray[i] - temp0[i]; nrArray[i] = nrArray[i] - temp0[i]; } } 如果它只是交换数字0-4就可以正常工作,一旦它达到5-9,代码将再次反转它,如下所示: for (int i = 0; i < input.length(); i++) { if (nrArray[i] == 5) { // 5 becomes 0 int temp0[] = { 0 }; nrArray[i] = nrArray[i] + temp0[i]; temp0[i] = nrArray[i] - temp0[i]; nrArray[i] = nrArray[i] - temp0[i]; } } 我也尝试了whereplaceAll方法来更改字符串,但同样的问题发生. 有什么建议? 解决方法
使用散列映射将源整数存储为键,将目标整数存储为值.
然后迭代遍历数组,在每次迭代期间从hashmap获取当前数组值目标并替换它. int a[] = {7,7,8,2,1,6,0}; Map<Integer,Integer> map = new HashMap<Integer,Integer>(); //0->5,1->9,2->8,3->7,4->6,5->0,6->4,7->3,8->2,9->1 map.put(0,5); map.put(1,9); map.put(2,8); map.put(3,7); map.put(4,6); map.put(5,0); map.put(6,4); map.put(7,3); map.put(8,2); map.put(9,1); for (int i = 0; i < a.length; i++) { a[i] = map.get(a[i]); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |