美文网首页
数字特征值

数字特征值

作者: Coder_Newson | 来源:发表于2019-10-17 15:42 被阅读0次

题目来源:中国大学MOOC——零基础学JAVA语言


image.png

输入格式: 一个非负整数,整数的范围是[0,1000000]。
输出格式: 一个整数,表示计算结果。
输入样例: 342315
输出样例: 13

一开始看到这一题,题目又长内容又多就不想做了,拖了好几天,最后下决心好好看看题目,发现其实并不难(方法总比困难多),之前是因为看视频,老师没有用数组解决,然后做题时就卡在这里了,因为我只想到了用数组来解决这个问题,如果不用数组,那我暂时还真想不出怎么解决。
我的解题思路:创建三个数组,分别用于存放数字、数位、以及奇偶一致,由于用到数组,所以还需要一个count变量来统计数字的数位,比如说:123是3位数,那么count = 3,这个变量用于控制循环次数(计算二进制)。

package www.zhejiang.test03;

import java.util.Scanner;

/**
 * @创建人 wuzengyu
 * @创建时间 2019/10/16
 * @描述
 */
public class Main {
    public static void main(String[] args) {
        int num;
        int[] digits = new int[7];      // 有效数位
        int[] numbers = new int[7];     // num个位
        int[] oddAndEven = new int[7];  // 奇偶数
        Scanner sc = new Scanner(System.in);
        while (true)
        {
             num = sc.nextInt();
            if ((num >= 0) && (1000000 >= num))
            {
                break;
            }
            else
            {
                System.out.println("请输入正确数字!");
            }
        }

        int count = 0;  // 计算输入数字的个数

        for (int i = 0; i < 7; i++)
        {
            int digit = num % 10;   // 得到个位
            numbers[i] = digit;     // 放入数组
            digits[i] = i + 1;
            count++;
            if (num >= 0 && num <= 9)
            {
                break;
            }
            num = num / 10;         // 去掉个位

        }

        System.out.println("输入数字的数位:" + count);
        System.out.print("数字:");
        for (int i : numbers)
        {
            System.out.print(" " + i);
        }
        System.out.println();
        System.out.print("数位:");
        for (int j : digits)
        {
            System.out.print(" " + j);
        }

        // 计算奇偶一致性,奇偶一致则为0
        for (int i = 0; i < numbers.length; i++)
        {
            if ((numbers[i] % 2 == 0 && digits[i] % 2 ==0) || (numbers[i] % 2 == 1 && digits[i] % 2 == 1))
            {
                oddAndEven[i] = 1;
            }
        }

        System.out.println();
        System.out.print("奇偶:");
        for (int k: oddAndEven)
        {
            System.out.print(" " + k);
        }

        num = 0;    // 重置为0,用于保存数字特征值
        for (int i = 0; i < count; i++)
        {
            if (oddAndEven[i] != 0)
            {
                num += (int)(Math.pow(2,i));
            }
        }
        System.out.println();
        System.out.println("数字特征值:" + num);

    }
}

运行结果:


image.png

虽然运行的结果正确,但是可看出程序存在的缺陷,如果你有更优的方案,请在下方留言吧~

相关文章

  • 2019-05-05

    数字特征值 0 是偶数

  • 【第四周作业02数字特征值】程序设计入门——C语言(翁恺)

    数字特征值(5分) 题目内容: 对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开...

  • ex9

    数字特征值 题目内容对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数...

  • 数字特征值

    题目来源:中国大学MOOC——零基础学JAVA语言 输入格式: 一个非负整数,整数的范围是[0,1000000]...

  • 5.数字特征值

    题目内容:对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个...

  • 2数字特征值(5分)

    题目内容:对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个...

  • 第三周_循环_数字特征

    对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,...

  • 实验7 - 幂法&反幂法&微分方程求解(ode函数)

    用反幂法求解下列矩阵的最大特征值以及对应的特征向量,精确到6位数字: 运行结果 分别用幂法求下列矩阵的主特征值,反...

  • 特征值、特征向量和奇异值

    特征值和特征向量 1 特征值分解与特征向量 特征值分解可以得到特征值(eigenvalues)与特征向量(eige...

  • 人脸 Haar 特征快速检测及其特征计算

    对角线特征在原始的论文中没有使用。 即,将矩形区域内的紫色区域数字之和减去青色区域内数字之和,得到的就是特征值:[...

网友评论

      本文标题:数字特征值

      本文链接:https://www.haomeiwen.com/subject/rrxvmctx.html