Я просто пытаюсь округлить число, передавая число с помощью process.stdin, а затем используя process.stdout.write.
Я сначала попытался:
process.stdin.resume();
process.stdin.setEncoding('utf8');
var stdin = '';
process.stdin.on('data', function (chunk) {
stdin += chunk;
}).on('end', function() {
var lines = stdin.split('\n');
for(var i=0; i<lines.length; i++) {
let num = Number(lines[i])
let sqrd = num*num
process.stdout.write(sqrd);
}
});
Затем я получаю ошибку типа данных, потому что возвращаю число, а не строку. Затем я попробовал следующую модификацию process.stout.write(sqrd):
process.stdout.write(sqrd.toString());
Я ожидаю, если бы я передал значение 5, чтобы оно вернуло 25, но в действительном действии оно возвращает 250. Почему это?
Есть ли лучший способ вернуть результат?
EDIT: Я попытался выяснить тип возвращаемого значения:
process.stdin.resume();
process.stdin.setEncoding('utf8');
var stdin = '';
process.stdin.on('data', function (chunk) {
stdin += chunk;
}).on('end', function() {
var lines = stdin.split('\n');
for(var i=0; i<lines.length; i++) {
let sqrd = lines[i]*lines[i]
process.stdout.write(typeof(sqrd));
}
});
и он возвращает "numbernumber", который предполагает, что он пытается записать его дважды?
Вторая итерация вызвана символом New Line (\n), оставшимся в вашем массиве строк. Не перебирайте последний элемент. Чтобы исправить это, выполните следующие действия:
Изменить:
for(var i=0; i<lines.length; i++) {
Для того, чтобы:
for(var i=0; i<lines.length - 1; i++) {
stdin
столкнулся с0
после5
и когда оба в квадрате, результат составил250