注册 登录
编程论坛 JAVA论坛

哪位大佬,求解答一下这个java代码

saberlily 发布于 2018-05-22 17:40, 3711 次点击
1.数字加密。
输入1个四位数,将其加密后输出。加密方法是将该数每一位上的数字加9,然后除以10取余,作为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
例如:
输入:
1257
输出:
The encrypted number is 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)
14 回复
#2
疯狂的小a2018-05-22 19:15
程序代码:
package com.xiaoa.test;
import static java.lang.System.out;
import java.util.Scanner;

/**

 *

 * 输入1个四位数,将其加密后输出。加密方法是将该数每一位上的数字加9,然后除以10取余,作为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。

 * 例如: 输入: 1257 输出: The encrypted number is

 * 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)

 
*/
public class Demo {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
        out.println("请输入一个四位数:");
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        // 判断数字是否是四位数
        Boolean flag = test(num);

        // 将各个位上的数字加密
        if (!flag) {
            out.println("数字不符合要求!");
            return;
        } else {
            // 将数字拆分
            String str = num + "";
            String[] strs = str.split("");
            // 创建一个数组
            int[] arr = new int[strs.length];
            // 遍历数组
            for (int i = 0; i < arr.length; i++) {
                int encrypt = encrypt(strs[i]);
                arr[i] = encrypt;
            }
            // 将加密后的数组arr,调整顺序
            int[] arr2 = change(arr);
            // 将数组转换成数字输出
            StringBuffer sb = new StringBuffer();
            for (int i : arr2) {
                sb.append(i + "");
            }

            String string = sb.toString();
            int result = Integer.parseInt(string);
            out.println("The encrypted number is " + result);

        }

    }
   
    //交换数组元素位置
    private static int[] change(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (i == 0) {
                int temp = arr[0];
                arr[0] = arr[2];
                arr[2] = temp;
            }
            if (i == 1) {
                int temp = arr[1];
                arr[1] = arr[3];
                arr[3] = temp;
            }
        }

        return arr;
    }
   
    //加密
    private static int encrypt(String str) {
        int num = Integer.parseInt(str);
        int a = num + 9;
        int b = a % 10;
        return b;
    }

    // 测试是否是四位数
    private static Boolean test(int num) {
        Boolean flag = false;
        if (num >= 1000 && num <= 9999) {
            flag = true;
        }
        return flag;
    }
}
#3
saberlily2018-05-22 19:57
回复 2楼 疯狂的小a
感谢大佬
#4
saberlily2018-05-22 20:01
有蜘蛛,蜻蜓,蝉三种动物共18只,共有腿118条,翅膀20对(蜘蛛8条腿;蜻蜓6条腿,2对翅膀;蝉6条腿,1对翅膀),三种动物各几只?大佬,你看这个如何写呢?
#5
疯狂的小a2018-05-22 20:03
你是在做作业吗
#6
saberlily2018-05-22 20:06
对,大学java实训课,我头皮发麻
#7
疯狂的小a2018-05-22 20:13
程序代码:
package com.xiaoa.test;

/**

 * 有蜘蛛,蜻蜓,蝉三种动物共18只,共有腿118条,翅膀20对(蜘蛛8条腿;蜻蜓6条腿,2对翅膀;蝉6条腿,1对翅膀),三种动物各几只?大佬,你看这个如何写呢?

 *

 * 分析: 1.假设有i,j,k只蜘蛛,蜻蜓,蝉

 
*/
public class Demo2 {
    public static void main(String[] args) {
        for (int i = 1; i <= 18; i++) {
            for (int j = 1; j <= 18; j++) {
                for (int k = 1; k <= 18; k++) {
                    int legNum = 8 * i + 6 * j + 6 * k;
                    int wingNum = 2 * j + 1 * k;
                    if (legNum == 118 && wingNum == 20) {
                        System.out.println("蜘蛛,蜻蜓,蝉各:" + i + ", " + j + ", " + k + "只");
                    }
                }
            }
        }
    }
}

蜘蛛,蜻蜓,蝉各:2, 3, 14只
蜘蛛,蜻蜓,蝉各:5, 7, 6只
#8
saberlily2018-05-22 20:13
不愧是大佬啊,膜拜中
#9
saberlily2018-05-22 20:19
打印出如下所示倒三角图形。
12345678987654321
123456787654321
 1234567654321
  12345654321
   123454321
    1234321
     12321
      121
       1

正三角型
        1
       121
      12321
     1234321
    123454321
   12345654321
  1234567654321
123456787654321
12345678987654321


还有这两个,非常感谢
#10
saberlily2018-05-22 20:28
同样是九年义务教育,您为何如此优秀
#11
疯狂的小a2018-05-22 20:46
程序代码:
package com.xiaoa.test;
/**

 *

 * 打印出如下所示倒三角图形。
12345678987654321
123456787654321
1234567654321
12345654321
123454321
1234321
12321
121
1

正三角型
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321


还有这两个,非常感谢

 *

 
*/
public class Demo4 {
    public static void main(String[] args) {
        print1();
        print2();
    }

    private static void print2() {
        for(int i=1;i<=9;i++) {
            //打印回文数
            printHuiWen(i);
            System.out.println();
        }
    }

    private static void print1() {
        for(int i=9;i>=1;i--) {
            //打印回文数
            printHuiWen(i);
            System.out.println();
        }
        
    }

    private static void printHuiWen(int i) {
        for(int j=1;j<=i;j++) {
            System.out.print(j);
            if(j==i) {
                for(int k=j-1;k>=1;k--) {
                    System.out.print(k);
                }
            }
        }
        
    }
}
#12
saberlily2018-05-22 20:56
谢谢大佬
#13
saberlily2018-05-22 20:57
12345678987654321
123456787654321
 1234567654321
  12345654321
   123454321
    1234321
     12321
      121
       1

5.正三角型
        1
       121
      12321
     1234321
    123454321
   12345654321
  1234567654321
123456787654321
12345678987654321
#14
saberlily2018-05-22 20:57
大佬,是这样的等腰三角形形状
#15
疯狂的小a2018-05-22 21:18
程序代码:
package com.xiaoa.test;

/**

 *

 * 打印出如下所示倒三角图形。 12345678987654321 123456787654321 1234567654321 12345654321

 * 123454321 1234321 12321 121 1

 *

 * 正三角型 1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321

 * 12345678987654321

 *

 *

 * 还有这两个,非常感谢

 *

 
*/
public class Demo4 {
    public static void main(String[] args) {
        print1();
        print2();
    }

    private static void print2() {
        int j = 8;
        for (int i = 1; i <= 9; i++) {
            for (int k = 0; k < j; k++) {
                System.out.print("  ");
            }
            j--;
            // 打印回文数
            printHuiWen(i);
            System.out.println();
        }
    }

    private static void print1() {
        int j = 0;
        for (int i = 9; i >= 1; i--) {
            for (int k = 0; k < j; k++) {
                System.out.print("  ");
            }
            j++;
            // 打印回文数
            printHuiWen(i);
            System.out.println();
        }

    }

    private static void printHuiWen(int i) {
        for (int j = 1; j <= i; j++) {
            System.out.print(j);
            if (j == i) {
                for (int k = j - 1; k >= 1; k--) {
                    System.out.print(k);
                }
            }
        }

    }
}
1