javascript - Javascript。错误的比较输出
问题描述
fs.readFile('./input.txt', (error, data) => {
if(error)
console.log(error);
const input = data.toString();
const dataArray = input.split(/[\n\r ]+/);
const lastItem = dataArray.length;
let accumulator = 0;
let counter = 0;
for(let i=0; i<lastItem-1; i++) {
let tempArray = dataArray[i];
let splitArray = tempArray.split('x');
let a = splitArray[0];//length
let b = splitArray[1];//width
let c = splitArray[2];//height
let d = a<b? (b<c?c:b) : (a<c?c:a);
let output = 0;
if(d === a)
output = (2*b + 2*c + a*b*c);
else if(d === b)
output = (2*a + 2*c + a*b*c);
else
output = (2*b + 2*a + a*b*c);
accumulator += output;
}})
输入:3x11x24 13x5x19 1x9x27
这是我的代码和输入。而且我想知道为什么我得到错误的比较来得到'd'数字。我希望 'd' 是输入中每 3 个数字中最大的一个。对我来说真正奇怪的是,当我想 console.log(a < b) 第一个输入应该是真的(因为 3 小于 11 )但给了我假,我不能为 'd' 分配任何好的价值,因为我不知道我的比较做错了什么。(我正在使用节点来执行我的代码,如果这给你任何错误的线索)请帮助:(
解决方案
在您的代码中 a,b,c 是字符串。你正在拆分一个字符串,结果你得到一个字符串。您需要转换为一个数字。
let a = +splitArray[0];//length
let b = +splitArray[1];//width
let c = +splitArray[2];
将字符串转换为数字,您的比较将起作用
推荐阅读
- node-opcua - 一个订阅中的多个变量
- cmd - 我无法对程序文件使用 where 命令
- r - 修改一行数据以获得漂亮的输出(摘要),重塑 - 将行拆分为新的多列
- java - 缓冲阅读器抛出异常
- testing - 赛普拉斯,如何检查属性是否存在
- python - Fizzbuzz Challenge in Twilio quest
- html - 如何在 WordPress 中让这些行彼此相邻?
- python - tkinter - 为什么会有像 bbox 这样的东西?
- python - Tensorflow:PartialTensorShape:合并期间不兼容的等级:2 vs. 1
- php - 调用未定义的函数 apcu_add()