2017-04-30 5 views
-3

Ich versuche, ein einfaches Programm zu schreiben, um die größte gerade Zahl von einem Array zu berechnen.Warum funktioniert mein Programm nicht?

Ein Array von 10 Elementen wird verwendet.

function biggestEven(array) {  
 
    var numberOfNumbers = array.length; 
 
    var biggestYet = 0; 
 
    var theNumber; 
 
    for (var i = 0; i < numberOfNumbers; i++) { 
 
    if(array[i] % 2 = 0) { 
 
     biggestYet = array[i]; 
 
    } 
 
    if(array[i] % 2 = 0 && array[i] > biggestYet) { 
 
     theNumber = biggestYet; 
 
    } 
 
    } 
 
    return theNumber; 
 
} 
 
var myArray = []; 
 
for (var i = 0; i < 10; i++) {  
 
    myArray[i] = window.prompt("Enter number " + (i+1) + "of 10:"); 
 
} 
 
console.log("The biggest even number is: " + biggestEven(myArray));

Bitte helfen ich stecken bin. Das Programm führt nicht in Chrom.

Antwort

2

Sie geben einen Wert, nicht zu vergleichen:

if(array[i] % 2 = 0) { 
    biggestYet = array[i]; 
} 

Und auch zurückkehrten Sie das falsche Element:

function biggestEven(array) { 
 
    var numberOfNumbers = array.length; 
 
    var biggestYet = 0; 
 
    var theNumber = 0; 
 
    
 
    for (var i = 0; i < array.length; i++) { 
 
    if (array[i] % 2 === 0) { 
 
     biggestYet = array[i]; 
 
    } 
 
    
 
    if (array[i] % 2 === 0 && array[i] > biggestYet) { 
 
     theNumber = biggestYet; 
 
    } 
 
    } 
 
    return biggestYet; 
 
} 
 

 
var myArray = []; 
 

 
for (var i = 0; i < 2; i++) {  
 
    myArray[i] = window.prompt("Enter number " + (i+1) + " of 10:"); 
 
} 
 

 
console.log("The biggest even number is: " + biggestEven(myArray));

Dies könnte helfen:

console.log(Math.max(...[267, 306, 108, 307].filter(function(value) { return value % 2 === 0 })));

+1

Sie sind auf halbem Weg. Bitte zeigen Sie, was falsch ist und wie Sie es beheben können –

0

Sie benötigen

if(array[i] % 2 = 0) { 
    biggestYet = array[i]; 
} 

zu

if(array[i] % 2 == 0) { 
    biggestYet = array[i]; 
} 
0

Hier ändern eine Lösung für Ihr Problem ist

function biggestEven(array) { 
 
    \t return Math.max(...array.filter(function(num){ 
 
     \t \t return num%2==0; 
 
    \t \t })); 
 
    } 
 
    var myArray = [1,2,36,45,51,16,7]; 
 
    alert(biggestEven(myArray));

Verwandte Themen