2014-10-17 76 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