这是我的代码,它有效,但只适用于正数。如果我什么都不写到它认为是值 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 作为答案。
有几个问题,请仔细检查你的代码
max
被定义了两次max
首先是一个数字,但是 "Input at least one number"
是一个字符串。尝试这样的事情:
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));
}
在所有 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 的原因是 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);
}
这里是:
let max=Number.MIN_VALUE;
if(a>max) max=a;
if(b>max) max=b;
if(c>max) max=c;