2014-10-17 81 views
0

我有一個數組顯示所需的值爲未定義隨機方式的問題,我創建了一個隨機生日生成器和大部分時間我測試了我得到預期的結果,但有時我得到的不確定數組結果顯示「undefined」以隨機的方式

我對第3個階段動態文本字段,這是我的代碼:

var mesArray:Array = new Array(

"janeiro", 
"fevereiro", 
"março", 
"abril", 
"maio", 
"junho", 
"julho", 
"agosto", 
"setembro", 
"outubro", 
"novembro", 
"dezembro" 
); 


mes_txt.text = mesArray[Math.round(Math.random() *12)]; 

function randRange(min:Number, max:Number):Number { 
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min; 
return randomNum; 
} 
for (var a = 0; a < 1; a++) { 
var b:Number = randRange(1940, 1997) 
ano_txt.text = b; 
} 


if(mes_txt.text == "fevereiro") 
{ 

for (var c = 0; c < 1; c++) { 
var d:Number = randRange(1, 29) 
dia_txt.text = d; 

} 


function randRange2(min2:Number, max2:Number):Number { 
var randomNum2:Number = Math.floor(Math.random() * (max2 - min2 + 1)) + min2; 
return randomNum2; 
} 

}else if(mes_txt.text == "abril") 
{ 

for (var e = 0; e < 1; e++) { 
var f:Number = randRange3(1, 30) 
dia_txt.text = f; 

} 

function randRange3(min3:Number, max3:Number):Number { 
var randomNum3:Number = Math.floor(Math.random() * (max3 - min3 + 1)) + min3; 
return randomNum3; 
} 


}else if(mes_txt.text == "junho") 
{ 
for (var g = 0; g < 1; g++) { 
var h:Number = randRange4(1, 30) 
dia_txt.text = h; 

} 
function randRange4(min4:Number, max4:Number):Number { 
var randomNum4:Number = Math.floor(Math.random() * (max4 - min4 + 1)) + min4; 
return randomNum4; 
} 


}else if(mes_txt.text == "setembro") 
{ 
for (var i = 0; i < 1; i++) { 
var j:Number = randRange5(1, 30) 
dia_txt.text = j; 

} 

function randRange5(min5:Number, max5:Number):Number { 
var randomNum5:Number = Math.floor(Math.random() * (max5 - min5 + 1)) + min5; 
return randomNum5; 
} 



}else if(mes_txt.text == "novembro") 
{ 
for (var k = 0; k < 1; k++) { 
var l:Number = randRange6(1, 30) 
dia_txt.text = l; 

} 

function randRange6(min6:Number, max6:Number):Number { 
var randomNum6:Number = Math.floor(Math.random() * (max6 - min6 + 1)) + min6; 
return randomNum6; 
} 

}else{ 
    for (var m = 0; m < 1; m++) { 
var n:Number = randRange(1, 31) 
dia_txt.text = n; 


} 
    function randRange7(min7:Number, max7:Number):Number { 
var randomNum7:Number = Math.floor(Math.random() * (max7 - min7 + 1)) + min7; 
return randomNum7; 
} 

} 
+0

你得到的輸出是什麼?是輸出錯誤?爲什麼?預期產出是多少? – Paolo 2014-10-17 07:27:14

+0

輸出是一個隨機的月份,在數組中他們是葡萄牙語,輸出沒有錯,問題有時我錯了,而且undefined出現的結果是 – Fernando 2014-10-17 22:19:57

回答

0

你並不需要多次寫相同的功能,或使用循環。您的代碼可以更簡單:

var mesArray:Array = new Array('janeiro', 'fevereiro', 'março', 'abril', 'maio', 
           'junho', 'julho', 'agosto', 'setembro', 'outubro', 
           'novembro', 'dezembro'); 
/** 
* returns an integer between min and max 
*/ 
function randRange(min:int, max:int):int { 
    return min + Math.round(Math.random() * (max - min)); 
} 

// ano 
var a:int = randRange(1940, 1997); 
ano_txt.text = String(a); 

// mes 
var m:int = randRange(0, 11); 
mes_txt.text = String(mesArray[m]); 

// dia 
var dmax:int = (m == 3 || m == 5 || m == 8 || m == 10) ? 30 : 31; 
if (m == 1) dmax = 29; // feb 
var d:int = randRange(1, dmax); 
dia_txt.text = String(d); 

注意:二月份的特殊情況下,你應該寫代碼考慮到閏年!

編輯:

if (m == 1) dmax = ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) ? 29 : 28; 
+0

輝煌,喜歡它,你是對的跳躍多年來,我將嘗試一些關於這個問題的東西,我唯一需要改變的是int,因爲其餘的代碼都在AS2中,但是這很像一個魅力,非常感謝! 至於我得到的,未定義的結果,你有什麼線索出了什麼問題? – Fernando 2014-10-17 22:17:54

0

因此,這裏是一個與閏年功能和小時和分鐘發電機,我會在一個藝術的安裝使用此沿着最終的解決方案,謝謝你好閃爍的解。

var mesArray:Array = new Array('janeiro', 'fevereiro', 'março', 'abril', 'maio','junho','julho','agosto','setembro','outubro','novembro', 'dezembro'); 

/**returns an interger between min and max **/ 
function randRange(min:Number, max:Number):Number 
{ 
return min + Math.round(Math.random() * (max - min)); 
} 

// mes 
var m:Number = randRange(0, 11); 
mes_txt.text = String(mesArray[m]); 

// dia 
var dmax:Number = (m == 3 || m == 5 || m == 8 || m == 10) ? 30 : 31; 
var b:Number 
if (m == 1) dmax = 29; 

// feb 
var d:Number = randRange(1, dmax); 
dia_txt.text = String(d); 

// ano 
var a:Number = randRange(1940, 1997); 
ano_txt.text = String(a); 
if(((ano_txt.text % 4 == 0)&&(ano_txt.text % 100 != 0))||(ano_txt.text % 400 ==0)) 

{ 
(dmax == 29) 
bissexto_txt.text = "ano bissexto"; 
} 
else 
{ 
(dmax == 28) 
} 

// hora 
var h:Number = randRange(1, 24); 
hora_txt.text = string(h) 
if (h<10) hora_txt.text = "0" + h 

// minuto 
var mt:Number = randRange(0, 59); 
minuto_txt.text = string(mt) 
if (mt<10) minuto_txt.text = "0" + mt 
+0

關於閏年的代碼的邏輯是正確的,但是:1.在確定依賴於此值的dia_txt.text之前,您應評估'dmax'。 2.你應該使用'a',它是一個數字,而不是'dia_txt.text'這是一個字符串。我編輯了我的答案... – helloflash 2014-10-18 08:36:48

+0

感謝您的好意! – Fernando 2014-10-19 19:31:51