zoukankan      html  css  js  c++  java
  • 06-02 Java值传递、数据加密

    值传递:

    /*
        思考题1:看程序写结果,然后分析为什么是这个样子的。并画图讲解。最后总结Java中参数传递规律。
        
        Java中的参数传递问题:
            基本类型:形式参数的改变对实际参数没有影响。基本类型传递的是数据值
            引用类型:形式参数的改变直接影响实际参数。引用类型传递的是地址值
    */
    class ArgsDemo {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
            System.out.println("a:"+a+",b:"+b); //a:10,b:20
            change(a,b);
            System.out.println("a:"+a+",b:"+b); //???    a:10,b:20
    
            int[] arr = {1,2,3,4,5}; 
            change(arr);
            System.out.println(arr[1]); //???    4
        }
    
        public static void change(int a,int b) { //a=10,b=20
            System.out.println("a:"+a+",b:"+b); //a:10,b:20
            a = b;    //a=20
            b = a + b; //b=40
            System.out.println("a:"+a+",b:"+b); //a:20,b:40
        }
    
        public static void change(int[] arr) { //arr={1,2,3,4,5};
            for(int x=0; x<arr.length; x++) {
                if(arr[x]%2==0) {
                    arr[x]*=2;
                }
            }
            //arr={1,4,3,8,5};
        }
    }

    Java 基本类型值传递,引用类型值传递 内存图解:

     数据加密

    /*
        某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,
        在传递过程中需要加密,加密规则如下:
            首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
            最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,
            然后,把加密后的结果在控制台打印出来。 
            
        题目要求:
            A:数据是小于8位的整数
                定义一个int类型的数据
                int number = 123456;
            B:加密规则
                a:首先将数据倒序
                    结果 654321
                b:然后将每位数字都加上5,再用和除以10的余数代替该数字
                    结果 109876
                c:最后将第一位和最后一位数字交换
                    结果 609871
            C:把加密后的结果输出在控制台
            
            通过简单的分析,我们知道如果我们有办法把这个数据变成数组就好了。
            不是直接写成这个样子的:
                int[] arr = {1,2,3,4,5,6};
                
            如何把数据转成数组呢?
                A:定义一个数据
                    int number = 123456;
                B:定义一个数组,这个时候问题就来了,数组的长度是多少呢?
                    int[] arr = new int[8]; //不可能超过8
                    在赋值的时候,我用一个变量记录索引的变化。
                    定义一个索引值是0
                    int index = 0;
                C:获取每一个数据
                    int ge = number%10
                    int shi = number/10%10
                    int bai = number/10/10%10
                    
                    arr[index] = ge;
                    index++;
                    arr[index] = shi;
                    index++;
                    arr[index] = bai;
                    ...
    */
    /*        
        知识点:
            变量
            数据类型
            运算符
            键盘录入
            语句
            方法
            数组
    */
    import java.util.Scanner;
    
    class JiaMiDemo2 {
        public static void main(String[] args) {
            //创建键盘录入对象
            Scanner sc = new Scanner(System.in);
            
            //请输入一个数据
            System.out.println("请输入一个数据(小于8位):");
            int number = sc.nextInt();
            
            //写功能实现把number进行加密
            //调用
            String result = jiaMi(number);
            System.out.println("加密后的结果是:"+result);
        }
        
        /*
            需求:写一个功能,把数据number实现加密。
            两个明确:
                返回值类型:String 做一个字符串的拼接。
                参数列表:int number
        */
        public static String jiaMi(int number) {
            //定义数组
            int[] arr = new int[8];
            
            //定义索引
            int index = 0;
            
            //把number中的数据想办法放到数组中
            while(number > 0) {
                arr[index] = number%10;
                index++;
                number /= 10;
            }
            
            //把每个数据加5,然后对10取得余数
            for(int x=0; x<index; x++) {
                arr[x] += 5;
                arr[x] %= 10;
            }
            
            //把第一位和最后一位交换
            int temp = arr[0];
            arr[0] = arr[index-1];
            arr[index-1] = temp;
            
            //把数组的元素拼接成一个字符串返回
            //定义一个空内容字符串
            String s = "";
            
            for(int x=0; x<index; x++) {
                s += arr[x];
            }
            
            return s;
        }
    }
  • 相关阅读:
    606. Construct String from Binary Tree
    696. Count Binary Substrings
    POJ 3255 Roadblocks (次短路)
    POJ 2823 Sliding Window (单调队列)
    POJ 1704 Georgia and Bob (博弈)
    UVa 1663 Purifying Machine (二分匹配)
    UVa 10801 Lift Hopping (Dijkstra)
    POJ 3281 Dining (网络流之最大流)
    UVa 11100 The Trip, 2007 (题意+贪心)
    UVaLive 4254 Processor (二分+优先队列)
  • 原文地址:https://www.cnblogs.com/baiyangyuanzi/p/6805915.html
Copyright © 2011-2022 走看看