2016-07-07 4 views
0

math.maxを使用せずに最高の変数を見つける方法を知りたいと思います。私のコードの私の目的は、ユーザーにゲームの質問をすることです。ユーザーは毎日ゲーム時間を入力してから、すべての時間を合計して平均し、その日に大半のゲームを表示します。 私はプログラミングに新しいです、どんな助けが良いです!ここで最高の変数を見つけて表示する

が私のコードで、これまでに...

function total() { 
 
    var th = Number(monday.value) + Number(tuesday.value) + Number(wednesday.value) + Number(thursday.value) + Number(friday.value) + Number(saturday.value) + Number(sunday.value); 
 
    alert("You gamed for " + th + " hours this week"); 
 

 

 

 
    var ah = th/7; 
 
    alert("Your average is " + ah + " hours this week"); 
 
} 
 

 

 

 
button.onclick = total;
\
<!DOCTYPE html> 
 
<html> 
 
<link rel="stylesheet" type="text/css" href="draft.css"> 
 
<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" /> 
 
<title>The Gaming Hours Quiz</title> 
 

 
<body> 
 
    <h1>The Gaming Hours Quiz</h1> 
 
</body> 
 
<p>Welcome to the Gaming Hours Quiz. Please fill out the neccesary information correctly to get your true results</p> 
 

 
<h3 id="nametitle">What is your name?</h3> 
 
<input id="name" type="letter" name="" value="type name here..."> 
 

 
<h3>How many hours have you gamed on Monday?</h3> 
 
<input id="monday" type="number" name="" value="0"> 
 

 

 
<h3>How many hours have you gamed on Tuesday?</h3> 
 
<input id="tuesday" type="number" name="" value="0"> 
 

 

 
<h3>How many hours have you gamed on Wednesday?</h3> 
 
<input id="wednesday" type="number" name="" value="0"> 
 

 

 
<h3>How many hours have you gamed on Thursday?</h3> 
 
<input id="thursday" type="number" name="" value="0"> 
 

 

 
<h3>How many hours have you gamed on Friday?</h3> 
 
<input id="friday" type="number" name="" value="0"> 
 

 

 
<h3>How many hours have you gamed on Saturday?</h3> 
 
<input id="saturday" type="number" name="" value="0"> 
 

 

 
<h3>How many hours have you gamed on Sunday?</h3> 
 
<input id="sunday" type="number" name="" value="0"> 
 
<br> 
 
<br> 
 
<button id="button">Submit</button>

+0

なぜMath.maxを使用したくないのですか? – miyamoto

+1

@miyamoto、これはおそらく宿題です –

+0

はい宿題です –

答えて

0

は、アレイ内のすべての日を割り当てます。

var arr = [Number(monday.value), Number(tuesday.value), Number(wednesday.value), Number(thursday.value), Number(friday.value), Number(saturday.value), Number(sunday.value)]; 

は1つが1日に「gamed」という時間の最大値を格納するmax変数を作成します。

var hh = 0; 
var max = arr[0]; 

最大値を見つけるためにループをループします。以前のインデックスの値が現在のインデックスよりも小さい場合は、現在のインデックスをmaxに割り当てます。

for(var i = 1;i < arr.length;i++) { 
if(arr[i-1] < arr[i]) { 
max = arr[i]; 
    } 
} 

ここには、jsfiddleがあります。

+0

ありがとう、これはうまくいきます –

0

あなたが行うことができます。

function max() { 
    return Math.max(Number(monday.value) + Number(tuesday.value) + Number(wednesday.value) + Number(thursday.value) + Number(friday.value) + Number(saturday.value) + Number(sunday.value)); 
} 
+1

"math.max **を使わずに最高の変数を見つける方法を知りたいです。" - これは編集された可能性があります。 – ntgCleaner

2

レッツ・ストアアレイ内のすべての日を:

var days = [ parseInt(monday), parseInt(tuesday), parseInt(wednesday), parseInt(thursday), parseInt(friday), parseInt(saturday), parseInt(sunday) ]; 

次に、maxの値(0)を確立することによって最大値を見つけることができます。その後、毎日を反復し、それは価値がmax値以上であるかどう、maxにこの値を割り当てる:

var max = 0; 
days.forEach(function(day) { 
    if(day.value > max) { 
     max = day.value; 
    } 
}); 
+0

'monday'が要素であると仮定して、' Number(monday.value) 'または' parseInt(monday.value) 'を使うべきです。 'monday.value'は文字列になりますので、2つの文字列を足し合わせると連結されます(' '2 '+' 2 '===' 22'') –

+0

真実、私はJavaScriptを忘れました – FuriousD

0

これは、これを行うの非常に初歩的なアプローチです。読んで、何が起こっているのか理解してから、すべての時間を最終的に配列に入れるのは良いことです。

あなたが言及した他の誰かのような初心者の宿題をやっている場合、これは限り、あなたがそれを行うためのより良い方法は、配列の中に、あなたのすべての変数を置くことです

function getHighest() { 
    var hrs_monday = Number(monday.value) 
    var hrs_tuesday = Number(tuesday.value) 
    var hrs_wednesday = Number(wednesday.value) 
    var hrs_thursday = Number(thursday.value) 
    var hrs_friday = Number(friday.value) 
    var hrs_saturday = Number(saturday.value) 
    var hrs_sunday = Number(sunday.value); 
    var most_hrs = 0; 

    if(hrs_monday > most_hrs) { 
     most_hrs = hrs_monday; 
    } 
    if(hrs_tuesday > most_hrs) { 
     most_hrs = hrs_tuesday; 
    } 
    if(hrs_wednesday > most_hrs) { 
     most_hrs = hrs_wednesday; 
    }  
    if(hrs_thursday > most_hrs) { 
     most_hrs = hrs_thursday; 
    } 
    if(hrs_friday > most_hrs) { 
     most_hrs = hrs_friday; 
    } 
    if(hrs_saturday > most_hrs) { 
     most_hrs = hrs_saturday; 
    } 
    if(hrs_sunday > most_hrs) { 
     most_hrs = hrs_sunday; 
    } 

    alert("Most hours " + most_hrs); 
} 

を得ているとして、おそらくあり、その後、配列を反復処理し、most_hrs変数を上書き:

var hrs_array = []; 

hrs_array.push(Number(monday.value)); 
hrs_array.push(Number(tuesday.value)); 
hrs_array.push(Number(wednesday.value)); 
hrs_array.push(Number(thursday.value)); 
hrs_array.push(Number(friday.value)); 
hrs_array.push(Number(saturday.value)); 
hrs_array.push(Number(sunday.value)); 

max_hrs = 0; 

//Now you have all of your numbers in an array 
//do this when you get the numbers, not necessarily all together 

for(var i = 0; i < hrs_array.length; i++){ 
    if(hrs_array[i] > max_hrs) { 
     max_hrs = hrs_array[i]; 
    } 
} 

alert("Maximum Hours = " + max_hrs); 
0

練習の要件を満たすには、Math.maxの独自のバージョンを書くことができます(例:numericMax)。Math.maxと同じように使用してください。

あなたはarguments object、グローバルプロパティInfinityNaN、おそらくグローバル関数Numberと、もちろん、それが何のためのdesription Math.maxを理解する必要があります。

したがって、次のnumericMaxが書き込まれることがあります、あなたは難易度の書き込みがあり、(あなたはもちろん、このアプローチを、選択した場合)動作するように独自のバージョンを取得した場合、参照として意図されている方法を示しています。

function numericMax(){ 
    if(arguments.length == 0){ 
     return -Infinity; 
    } 
    for(var i = 0; i < arguments.length; ++i){ 
     if(typeof arguments[i] != "number"){ 
      arguments[i] = Number(arguments[i]); 
     } 
    } 
    var max = arguments[0]; 
    if(isNaN(max)) 
     return NaN; 
    for(i = 1; i < arguments.length; ++i){ 
     num = arguments[i]; 
     if(isNaN(num)){ 
      return NaN; 
     } 
     if(num > max){ 
      max = num; 
     } 
    } 
    return max; 
} 
関連する問題