for-each用法误区(不能改变数组元素值)

代码例程:

/**
 * 数据加密传输
 */
import java.util.Scanner;

public class secretPass {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num = 0;
        while (true) {
            System.out.println("请输入四位正整数:");
            num = input.nextInt();
            if (num > 999 && num < 10000) {
                System.out.println("输入数据有效!");
                break;
            } else {
                System.out.println("输入数据无效,请重新输入!");
            }
        }
        System.out.println("加密前的数据是:" + num);
        int[] arrs = new int[4];
        arrs[0] = num % 10; // 取个位
        arrs[1] = num / 10 % 10; // 取十位
        arrs[2] = num / 100 % 10; // 取百位
        arrs[3] = num / 1000; // 取千位
        // 不能使用for-each语句改变arrs数组的元素
        // for-each只能用来遍历打印数组元素

        
        for (int n : arrs) {
            n = (n + 5) % 10;
            System.out.print(n+" ");
        }
        
        /*
        for (int i = 0; i < arrs.length; i++) {
            arrs[i] = (arrs[i] + 5) % 10;
        }
        */

        /*
        for (int i = 0; i < arrs.length; i++) {
            System.out.print(arrs[i] + " ");
        }
        */

        int tmp1 = arrs[0];
        int tmp2 = arrs[1];
        int tmp3 = arrs[2];
        int tmp4 = arrs[3];
        arrs[0] = tmp4;
        arrs[1] = tmp3;
        arrs[2] = tmp2;
        arrs[3] = tmp1;
        System.out.print("加密后的数据是:");
        for (int i : arrs) {
            System.out.print(i);
        }
    }
}
输出结果是:

请输入四位正整数:
1234
输入数据有效!
加密前的数据是:1234
9 8 7 6 加密后的数据是:1234

修改后的例程:

/**
 * 数据加密传输
 */
import java.util.Scanner;

public class secretPass {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num = 0;
        while (true) {
            System.out.println("请输入四位正整数:");
            num = input.nextInt();
            if (num > 999 && num < 10000) {
                System.out.println("输入数据有效!");
                break;
            } else {
                System.out.println("输入数据无效,请重新输入!");
            }
        }
        System.out.println("加密前的数据是:" + num);
        int[] arrs = new int[4];
        arrs[0] = num % 10; // 取个位
        arrs[1] = num / 10 % 10; // 取十位
        arrs[2] = num / 100 % 10; // 取百位
        arrs[3] = num / 1000; // 取千位
        // 不能使用for-each语句改变arrs数组的元素
        // for-each只能用来遍历打印数组元素

        /*
        for (int n : arrs) {
            n = (n + 5) % 10;
            System.out.print(n+" ");
        }
        */

    
        for (int i = 0; i < arrs.length; i++) {
            arrs[i] = (arrs[i] + 5) % 10;
        }
    
        /*
        for (int i = 0; i < arrs.length; i++) {
            System.out.print(arrs[i] + " ");
        }
        */

        int tmp1 = arrs[0];
        int tmp2 = arrs[1];
        int tmp3 = arrs[2];
        int tmp4 = arrs[3];
        arrs[0] = tmp4;
        arrs[1] = tmp3;
        arrs[2] = tmp2;
        arrs[3] = tmp1;
        System.out.print("加密后的数据是:");
        for (int i : arrs) {
            System.out.print(i);
        }
    }
}

输出结果为:

请输入四位正整数:
1234
输入数据有效!
加密前的数据是:1234
加密后的数据是:6789

转载于:https://www.cnblogs.com/archermeng/p/7537631.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值