加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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]);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读