计算javascript中三者的最大数

问题描述 投票:0回答:5

这是我的代码,它有效,但只适用于正数。如果我什么都不写到它认为是值 0 的输入中,如果我只有一个或两个负数,这就是一个问题。

  function Calculeaza()
  {
    var a= document.getElementById("input1").value;
    var b= document.getElementById("input2").value;
    var c= document.getElementById ("input3").value;
    var max=0;
    
    var max = Math.max ( a,b,c); 
    
    if (a=='' && b=='' && c=='') {
        max=("Input at least one number");
    }
    alert(max);    
  }

我试图只输入一个负数,我希望将其作为最大值发出警报,但在警报中我得到 0 作为答案。

javascript input max alert negative-number
5个回答
0
投票

有几个问题,请仔细检查你的代码

  • max
    被定义了两次
  • max
    首先是一个数字,但是
    "Input at least one number"
    是一个字符串。
  • 您检查的输入字段是数字字段吗?如果不是,则您正在尝试使用字符串进行计算。

0
投票

尝试这样的事情:

var input1 = '';
var input2 = '';
var input3 = '';

var inputs = [input1, input2, input3];

var numbers = [];
for (var index in inputs) {
  if (inputs[index] !== '') {
    numbers.push(parseInt(inputs[index]));
  }
}

if (numbers.length === 0) {
  alert('Input at least one number')
} else {
  alert(Math.max(numbers));
}

0
投票

在所有 3 个字段都为空的情况下,此代码可能会输出 0,因此我建议您在继续之前解析数字。

 function Calculeaza()
  {
    var a = document.getElementById("input1").value;
    var b = document.getElementById("input2").value;
    var c = document.getElementById ("input3").value;
    var max=0;

    // parse to int and remove any NaN, 0s
    const inputs = [a, b, c].map(ip => Number.parseInt(ip)).filter(e => e);
    
    var max = Math.max (inputs); 
    
    if (a=='' && b=='' && c=='') {
        max=("Input at least one number");
    }
    alert(max);    
  }

0
投票

输入负数时最大值为 0 的原因是 Math.max() 函数将空字符串或任何非数字输入视为 0。要正确处理负数,您可以修改代码在计算最大值之前使用 isNaN() 函数检查输入值是否为有效数字。

这是一个更新的代码片段,用于检查有效输入值并将负数视为最大值:

  var a = parseFloat(document.getElementById("input1").value);
  var b = parseFloat(document.getElementById("input2").value);
  var c = parseFloat(document.getElementById("input3").value);
  var max = -Infinity;

  if (isNaN(a) && isNaN(b) && isNaN(c)) {
    max = "Input at least one number";
  } else {
    if (!isNaN(a) && a > max) {
      max = a;
    }
    if (!isNaN(b) && b > max) {
      max = b;
    }
    if (!isNaN(c) && c > max) {
      max = c;
    }
  }
  
  alert(max);
}

-1
投票

这里是:

let max=Number.MIN_VALUE;
if(a>max) max=a;
if(b>max) max=b;
if(c>max) max=c;
© www.soinside.com 2019 - 2024. All rights reserved.