2017-03-19 5 views
-1

年を入力する関数を作成しようとしています。出力は、その年がどこから来たのかを返します。私はほとんどがダウンしていますが、ロジックのどこかで何か不足していて、年が2000年(20世紀、私は21日)の正しい値を得ていません年変換関数

My JS:

function centuryFromYear(year) { 

    if (year <= 100) { 
     console.log("um") 
     return year * 0 + 1 
    } else if (year > 100 && year <= 1000) { 
     console.log("dois") 
     var kek = year/100 
     var lul = Math.floor(kek) 

    } else if (year > 1001) { 
     console.log("tres") 
     var kek = year/100 
     var lul = Math.floor(kek) 
     return (lul + 1) 
    } 

} 
+0

'今年は常に' 1 'になるだろう。 「1001年」のケースはありません。それらの 'if'文はまったく理由がありません。何年も何も戻ってきていません。「101」から「1000」。これは非常に些細な問題ですが、これを行う方法については多くのリソースがあります。 [Rubber Duck Debug](http://rubberduckdebugging.com)のコード。 – Xufox

+0

こんにちは、2000年は実際には21世紀ですが、あなたが得ている答えは正しいです。 https://en.wikipedia.org/wiki/21st_centuryかなり馬鹿だよね? – daft300punk

+0

@AbhilashSinghいいえ、これは間違っています。あなたのリンクをもう一度読んでください:_ "それは2001年1月1日に始まりました**そして2100年12月31日に終了するでしょう" _ – Xufox

答えて

1

は、このことがある:少し厄介なアプローチのための

function centuryFromYear(year) { 
 
    return Math.floor((year - 1)/100) + 1; 
 
} 
 

 

 
//* tests 
 
[100,101,250, 1000, 1001, 1999, 2000, 2001].forEach(function(y) { 
 
    console.log(y + ' year is in ' + centuryFromYear(y) + ' century'); 
 
});

+0

それはどのように動作するかを詳しく教えてください。 – Miguel

+0

正しい動作を確認するためのテストを追加しました。 – br3t

0

謝罪、私はおそらくより多くの電子があると確信していますlegant可能なアプローチ:
注:* 0 + 1 '負の世紀と年0 ADはグルジアカレンダー上に存在しない

function myFunction() { 
    year = 2000; 
    b = year; 
    if (b % 100 > 0){ 
     b = Math.floor((year)/100); 
     b = b +1 ; 
    } 
    else if (b % 100 == 0){ 
     b = Math.floor((year)/100); 
    } 
    else if (b < 100 && b > 0){ 
     b = (Math.floor((year)/100)+1); 
    } 

}