如何提取大数的单个数字存入数组?现有代码失效求解析
问题解析与修正方案
嘿,我来帮你捋捋代码出问题的原因,以及怎么修正~
核心问题:int类型不能用下标访问单个数字
你代码里的BigNumber是int类型的变量,它本质上是一个单一的数值,不是数组、字符串这种可以通过[]下标直接访问元素的类型。所以BigNumber[i]这种写法在语法上就不成立,程序自然没法把数字推入数组里。
两种可行的修正方案
方案1:转字符串遍历(代码更直观)
如果是JavaScript环境(看你用了push方法,推测大概率是JS),可以先把整数转成字符串,拆分后再转回数字存入数组:
let BigNumber = 2639; let IndividualNumber = []; // 把数字转成字符串,拆分成单个字符后遍历 BigNumber.toString().split('').forEach(char => { IndividualNumber.push(parseInt(char)); }); console.log(IndividualNumber); // 输出:[2, 6, 3, 9]
方案2:用数学运算拆分(不依赖字符串转换)
如果不想转字符串,可以通过取余和整除操作来逐个提取数字,最后反转数组得到正确顺序:
let BigNumber = 2639; let IndividualNumber = []; let tempNum = BigNumber; while (tempNum > 0) { // 取最后一位数字 IndividualNumber.push(tempNum % 10); // 去掉最后一位数字 tempNum = Math.floor(tempNum / 10); } // 因为是从后往前提取的,所以反转数组 IndividualNumber.reverse(); console.log(IndividualNumber); // 输出:[2, 6, 3, 9]
如果你用的是C++(代码里写了int)
那数组的定义和操作也要调整,用vector来存储,同样用数学方法拆分:
#include <vector> #include <algorithm> using namespace std; int main() { int BigNumber = 2639; vector<int> IndividualNumber; int tempNum = BigNumber; while (tempNum > 0) { IndividualNumber.push_back(tempNum % 10); tempNum /= 10; } reverse(IndividualNumber.begin(), IndividualNumber.end()); // 此时IndividualNumber就是[2, 6, 3, 9] return 0; }
内容的提问来源于stack exchange,提问作者Jim Skra
相关产品推荐
相关产品推荐

