2016-09-29 44 views
1

我編寫了以下JavaScript代碼以升序排列數字。這些數字是由用戶輸入的。這裏我聲明x,y和z是用戶輸入的變量。如何排序輸入3個數字

當我分別輸入值2,3和4時,輸出是正確的。但是當我輸入值(2,4,3)(3,2,4)(3,4,2)(4,3,2)(4,2,3)輸出是錯誤的。爲什麼預期的輸出不能打印? var x,y,z;

x = parseInt(prompt("Enter num")); 
y = parseInt(prompt("Enter num")); 
z = parseInt(prompt("Enter num")); 


if ((x<y)&&(x<z)) 
    { 
     document.write(x); 
      if (y<z) 
       { 
        document.write(y); 
        document.write(z); 
       } 
    } 

else if ((y<z)&&(y<x)) 
    { 
     document.write(y); 
      if (z<x) 
       { 
        document.write(z); 
        document.write(x); 
       } 
    } 

else if ((z<x)&&(z<y)) 
    { 
     document.write(z); 
      if (x<y) 
       { 
        document.write(x); 
        document.write(y); 
       } 
    } 

</body> 
</html> 
+3

你可以考慮的值的數組。 –

+0

對不起,我不喜歡數組 –

+0

你不需要像這樣使用數組。但是,您可以使用該數組對數據進行排序並獲取值,然後根據需要使用它。 –

回答

1

要使用三個變量回答你原來的問題,你需要爲每個主要比較的其他部分,寫變量的順序相反。

var x = parseInt(prompt("Enter num")), 
 
    y = parseInt(prompt("Enter num")), 
 
    z = parseInt(prompt("Enter num")); 
 

 
if (x < y && x < z) { 
 
    document.write(x); 
 
    if (y < z) { 
 
     document.write(y); 
 
     document.write(z); 
 
    } else {     // add this 
 
     document.write(z); 
 
     document.write(y); 
 
    } 
 
} else if (y < z && y < x) { 
 
    document.write(y); 
 
    if (z < x) { 
 
     document.write(z); 
 
     document.write(x); 
 
    } else {     // add this 
 
     document.write(x); 
 
     document.write(z); 
 
    } 
 
} else {      // you can skip the comparison here, 
 
    document.write(z);  // because there is no other possibillity 
 
    if (x < y) { 
 
     document.write(x); 
 
     document.write(y); 
 
    } else {     // add this 
 
     document.write(y); 
 
     document.write(x); 
 
    } 
 
}

你可以收集在一個數組中的值,並通過數值,然後排序。

var length = 3, 
 
    array = []; 
 

 
while(array.length<length) { 
 
    array.push(+prompt("Enter num")); 
 
} 
 
array.sort(function (a, b) { return a - b; }); 
 
console.log(array);

+0

有沒有辦法沒有數組? (以正常方式) –

+0

陣列是「正常」的方式。他們是爲了這個確切的情況。你應該有一個非常好的理由不使用它們。 –

0

創建從數組中的值,並使用Array.prototype.sort():

var x = parseInt(prompt("Enter num"), 10); 
 
var y = parseInt(prompt("Enter num"), 10); 
 
var z = parseInt(prompt("Enter num"), 10); 
 

 
var arr = [x,y,z]; 
 
console.log(arr.sort(function(a,b) { return a-b; }))

1

可以在使用構建sort()功能可以做到這一點...

x = parseInt(prompt("Enter num")); 
 
y = parseInt(prompt("Enter num")); 
 
z = parseInt(prompt("Enter num")); 
 

 
var sorted = [x,y,z].sort(function(a, b) { 
 
    return a - b; 
 
}) 
 
console.log('sorted: ',sorted.join(' '))

+0

你排序字符串,而不是數字。 –

+0

@NinaScholz你沒看到'parseInt()'嗎? –

+0

[sort()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)沒有回調就是排序字符串。 –