Javascript 查找数组中的最大值(整数集)

Javascript 查找数组中的最大值(整数集),javascript,Javascript,我的朋友让我帮他做作业,我被卡住了。以下是作业: 用户必须在第一个提示框中输入数组中的元素数。然后,他将得到每个数字输入的提示框。现在,输出必须是数组中的最大数。但这根本不起作用。使用下面的代码,我总是得到第一位数字最大的元素。(不管数字是负数还是正数,代码都不能正常工作) 这是我的代码(它甚至在JSFIDLE中不起作用,只是在我的文件中) 做吧! 这里是JavaScript function duzinaNiza() { var brClanova = prompt("Enter t

我的朋友让我帮他做作业,我被卡住了。以下是作业:

用户必须在第一个提示框中输入数组中的元素数。然后,他将得到每个数字输入的提示框。现在,输出必须是数组中的最大数。但这根本不起作用。使用下面的代码,我总是得到第一位数字最大的元素。(不管数字是负数还是正数,代码都不能正常工作)

这是我的代码(它甚至在JSFIDLE中不起作用,只是在我的文件中)

做吧!
这里是JavaScript

function duzinaNiza() {
    var brClanova = prompt("Enter the number of array elements:");

    if (brClanova > 0) {
        var niz = new Array();

        for (i=0; i<brClanova; i++) {
            var redniBr = i+1;
            niz[i] = prompt("Enter "+ redniBr +". array number:");
            \\ prompt for geting each array element
        }


        var maximum = niz[0];

        for (a=0; a<brClanova; a++) {

            if (maximum < niz[a]) {
                maximum = niz[a];
            }
        }

        document.write("Greatest value in array is: " + maximum);   
    }
}
函数duzinaNiza(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();

对于(i=0;i,这是因为输入是字符串,所以必须将其解析为整数。例如:

niz[i] = parseInt(prompt("Enter "+ redniBr +". array number:"), 10);

这是因为输入是一个字符串,所以必须将其解析为整数。例如:

niz[i] = parseInt(prompt("Enter "+ redniBr +". array number:"), 10);
修改代码

函数duzinaNiza(){
var brClanova=prompt(“输入数组元素数:”)*1;//将字符串转换为整数
如果(brClanova>0){
var niz=新数组();
对于(i=0;i修改代码

函数duzinaNiza(){
var brClanova=prompt(“输入数组元素数:”)*1;//将字符串转换为整数
如果(brClanova>0){
var niz=新数组();
对于(i=0;i试试这个:

function duzinaNiza() {
    var brClanova = prompt("Enter the number of array elements:");

    if (brClanova > 0) {
        var niz = new Array();

        for (i=0; i<brClanova; i++) {
            var redniBr = i+1;
            niz[i] = parseInt(prompt("Enter "+ redniBr +". array number:"));
            // prompt for geting each array element
        }


        var maximum = niz[0];

        for (a=0; a<brClanova; a++) {

            if (maximum < niz[a]) {
                maximum = niz[a];
            }
        }

        document.write("Greatest value in array is: " + maximum);   
    }
}
函数duzinaNiza(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
对于(i=0;i试试这个:

function duzinaNiza() {
    var brClanova = prompt("Enter the number of array elements:");

    if (brClanova > 0) {
        var niz = new Array();

        for (i=0; i<brClanova; i++) {
            var redniBr = i+1;
            niz[i] = parseInt(prompt("Enter "+ redniBr +". array number:"));
            // prompt for geting each array element
        }


        var maximum = niz[0];

        for (a=0; a<brClanova; a++) {

            if (maximum < niz[a]) {
                maximum = niz[a];
            }
        }

        document.write("Greatest value in array is: " + maximum);   
    }
}
函数duzinaNiza(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
对于(i=0;i尝试,[提示:我刚刚使用了
'+'运算符
将值强制转换为
数字
(来自
提示符的值

  duzinaNiza = function () {
    var brClanova = prompt("Enter the number of array elements:");

    if (brClanova > 0) {
        var niz = new Array();
        var maximum;

        for (i=0; i<brClanova; i++) {
            var temp = +prompt("Enter "+ i+1 +". number:");
            if(i===0) { maximum = temp }
            else { maximum = (temp > maximum)?temp:maximum; }

        }

        alert("Greatest value in array is: " + maximum);   
    }
}
duzinaNiza=函数(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
var最大值;
对于(i=0;i最大值)?温度:最大值;}
}
警报(“数组中的最大值为:“+最大值”);
}
}
试试,[提示:我刚刚使用了
'+'操作符
将值转换为
数字
(来自
提示符的值

  duzinaNiza = function () {
    var brClanova = prompt("Enter the number of array elements:");

    if (brClanova > 0) {
        var niz = new Array();
        var maximum;

        for (i=0; i<brClanova; i++) {
            var temp = +prompt("Enter "+ i+1 +". number:");
            if(i===0) { maximum = temp }
            else { maximum = (temp > maximum)?temp:maximum; }

        }

        alert("Greatest value in array is: " + maximum);   
    }
}
duzinaNiza=函数(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
var最大值;
对于(i=0;i最大值)?温度:最大值;}
}
警报(“数组中的最大值为:“+最大值”);
}
}

问题在于,当您想要比较两个数字时,您正在比较两个字符串。 换句话说,以下表达式在javascript中是合法的,计算结果为true:

if('4' > '393939393'){
    //true! string '4' is greater than string '3' (first char of '393939393')
}
您应该做的是转换从函数提示符接收到的值,因此它被视为一个数字。您可以使用以下函数执行此操作:

parseInt(prompt("Enter "+ redniBr +". array number:"), 10);

第一个参数是要强制转换为数字的值,而第二个参数是数字的基数(或“基”)。

问题在于,当您要比较两个数字时,您正在比较两个字符串。 换句话说,以下表达式在javascript中是合法的,计算结果为true:

if('4' > '393939393'){
    //true! string '4' is greater than string '3' (first char of '393939393')
}
您应该做的是转换从函数提示符接收到的值,因此它被视为一个数字。您可以使用以下函数执行此操作:

parseInt(prompt("Enter "+ redniBr +". array number:"), 10);

第一个参数是要转换为数字的值,而第二个参数是数字的基数(或“基数”)。

因此,这里的主要问题是,您没有将数字作为“数字”,而是作为字符串。方法
prompt
返回一个字符串,因此您需要转换它们:

 function duzinaNiza() {
    var brClanova = +prompt("Enter the number of array elements:");

    if (!brClanova)
      return;

    var niz = [];

    for (var i=0; i < brClanova; i++) {
        var redniBr = i + 1;
        niz[i] = +prompt("Enter "+ redniBr + ". array number:");
    }

    var max = niz[0]; 

    for (var a = 1; a < brClanova; a++) {

      if (max < niz[a])
         max = niz[a];

    }

    document.write("Greatest value in array is: " + max);
}
你将有:

    var max = Math.max.apply(null, niz);

    document.write("Greatest value in array is: " + max);

在这种情况下,您甚至不需要一元加号运算符,因为
Math.max
会处理这个问题。

因此,这里的主要问题是,您没有将数字作为“数字”,而是作为字符串。方法
prompt
返回一个字符串,因此您需要转换它们:

 function duzinaNiza() {
    var brClanova = +prompt("Enter the number of array elements:");

    if (!brClanova)
      return;

    var niz = [];

    for (var i=0; i < brClanova; i++) {
        var redniBr = i + 1;
        niz[i] = +prompt("Enter "+ redniBr + ". array number:");
    }

    var max = niz[0]; 

    for (var a = 1; a < brClanova; a++) {

      if (max < niz[a])
         max = niz[a];

    }

    document.write("Greatest value in array is: " + max);
}
你将有:

    var max = Math.max.apply(null, niz);

    document.write("Greatest value in array is: " + max);

在这种情况下,您甚至不需要一元加号运算符,因为
Math.max
会处理这个问题。

您不需要parseInt-如果您减去可以转换为数字的字符串,它们就会被转换。因此,您可以从下一个数字中减去最大值,并查看它是否留下余数

此外,parseInt将销毁小数,因此您不会知道1.5大于1

您的评论使用了错误的字符-`('\'应该是'/'))

函数duzinaNiza(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();

对于(var i=0;i您不需要parseInt-如果您减去可以转换为数字的字符串,它们将被转换。因此,您可以从下一个数字中减去最大值,并查看它是否保留余数

此外,parseInt将销毁小数,因此您不会知道1.5大于1

您的评论使用了错误的字符-`('\'应该是'/'))

函数duzinaNiza(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();

对于(var i=0;iI认为输入是一个字符串,但我不确定。因此,如果没有
parseInt
?,就无法从提示符中获取数字(教授是个哑巴,他不知道这个函数)。你必须解析它,因为字符串比较是不同的