乘法变量时的错误答案

 厚宝-Anzx_730 发布于 2023-02-13 15:26

我试图将两个变量相乘.一个是int,另一个是char数组.

我的代码是这样的

int biggestProduct = 1;
int currProduct = 1;
char[] array = num.toCharArray();

for (int x = 0; x < array.length; x++) {
    if (x < 5) {
        System.out.println(currProduct + " * " + array[x] + " = " + currProduct * array[x]);
        currProduct *= array[x];
    }
}

return biggestProduct;

问题在于 currProduct*= array[x]

打印出来时这是我的输出:

1 * 7 = 55
55 * 3 = 2805
2805 * 1 = 137445
137445 * 6 = 7422030
7422030 * 7 = 408211650

为什么它不能正确倍增?

1 个回答
  • 问题是,的数值char 7不是7,但55.

    因为在Java中,char数据类型是单个16位Unicode字符(请参阅下面的编码表).

    在此输入图像描述

    如果您查看此表,您会看到7被编码为0x0037 = 3*16^1 + 7 = 55.

    如果要获取角色的实际数值,可以使用Character.getNumericValue(char ch):

     char ch = '7';
     int number = Character.getNumericValue(ch);
     System.out.print(number); //print 7
    

    因此,要编辑代码,它将如下所示:

            String num = "73167";
            int biggestProduct = 1;
            int currProduct = 1;
            char[] array = num.toCharArray();
    
            for (int x = 0; x < array.length; x++) {
                if (x < 5) {
                    System.out.println(currProduct + " * " + array[x] + " = " + currProduct * Character.getNumericValue(array[x]));
                    currProduct *= Character.getNumericValue(array[x]);
                }
    
            }
    

    输出:

    1 * 7 = 7
    7 * 3 = 21
    21 * 1 = 21
    21 * 6 = 126
    126 * 7 = 882
    

    验证: 7*3*1*6*7 = 882

    2023-02-13 15:29 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有