在我的程序中,用户必须在两者之间输入一个数字 10和99,程序将数字转换为单词。该计划有点有效;但是,当我输入一个20到99之间的数字时,例如45,该程序将打印出来," Forty fiveForty。"这是"错误#2007:参数文本必须为非空,"出现在输出部分。我似乎也无法让11到19之间的数字发挥作用。结果显示"错误。"而不是用单词显示数字。请编辑我的代码,以使程序正常运行并正确打印10到99之间的数字。
// This line makes the button, btnConvert wait for a mouse click
// When the button is clicked, the convertNumber function is called
btnConvert.addEventListener(MouseEvent.CLICK, convertNumber);
// These lines make the textinputs wait for a mouse click
// When any of these components are clicked, the clearLabels function is called
txtinNumber.addEventListener(MouseEvent.CLICK, clearLabels);
// Declare Global Variables
var num:int; // number from 10 - 99
var tensDigit:int; // the tens digit
var onesDigit:int; // the ones digit
var teensDigit = [11, 12, 13, 14, 15, 16, 17, 18, 19];
// This is the convertNumber function
// e:MouseEvent is the click event experienced by the button
// void indicates that the function does not return a value
function convertNumber(e:MouseEvent):void
{
getData();
if (num < 10 || num > 99){
lblOutput.text = "Invalid number. Enter a number between 10 and 99 inclusive.";
}
else{
lblOutput.text = "";
if (num >= 20) {
tensDigit = Math.floor(num / 10);
onesDigit = num % 10;
tens();
ones();
}
else{
tensDigit = Math.floor(num / 10);
onesDigit = num % 10;
teens();
}
}
lblOutput.text =
tens();
lblOutput.text += onesDigit
ones();
}
// This is the getData function
// It gets the number from the user
function getData()
{
// complete the code here
num = int(txtinNumber.text);
}
// This is the tens function
// It outputs the word representation of 20, 30, 40,..,90
function tens()
{
if (tensDigit == 2 && tensDigit < 3)
{
lblOutput.text += "Twenty";
}
else if (tensDigit == 3 && tensDigit < 4)
{
lblOutput.text += "Thirty";
}
else if (tensDigit == 4 && tensDigit < 5)
{
lblOutput.text += "Forty";
}
else if (tensDigit == 5 && tensDigit < 6)
{
lblOutput.text += "Fifty";
}
else if (tensDigit == 6 && tensDigit < 7)
{
lblOutput.text += "Sixty";
}
else if (tensDigit == 7 && tensDigit < 8)
{
lblOutput.text += "Seventy";
}
else if (tensDigit == 8 && tensDigit < 9)
{
lblOutput.text += "Eighty";
}
else if (tensDigit == 9 && tensDigit < 10)
{
lblOutput.text += "Ninety";
}
else
{
lblOutput.text += "Unknown."
}
}
// This is the ones function
// It outputs the word representaion for any number from 1 - 9 inclusive
function ones()
{
if (onesDigit == 1)
{
lblOutput.text += " one"
}
else if (onesDigit == 2)
{
lblOutput.text += " two"
}
else if (onesDigit == 3)
{
lblOutput.text += " three"
}
else if (onesDigit == 4)
{
lblOutput.text += " four"
}
else if (onesDigit == 5)
{
lblOutput.text += " five"
}
else if (onesDigit == 6)
{
lblOutput.text += " six"
}
else if (onesDigit == 7)
{
lblOutput.text += " seven"
}
else if (onesDigit == 8)
{
lblOutput.text += " eight"
}
else if (onesDigit == 9)
{
lblOutput.text += " nine"
}
}
// This is the teens function
// It outputs the word representation for any number from 10 - 19 inclusive
function teens()
{
if (teensDigit == 10)
{
lblOutput.text += "Ten"
}
else if (teensDigit == 11)
{
lblOutput.text += "Eleven"
}
else if (teensDigit == 12)
{
lblOutput.text += "Twelve"
}
else if (teensDigit == 13)
{
lblOutput.text += "Thirteen"
}
else if (teensDigit == 14)
{
lblOutput.text += "Fourteen"
}
else if (teensDigit == 15)
{
lblOutput.text += "Fifteen"
}
else if (teensDigit == 16)
{
lblOutput.text += "Sixteen"
}
else if (teensDigit == 17)
{
lblOutput.text += "Seventeen"
}
else if (teensDigit == 18)
{
lblOutput.text += "Eighteen"
}
else if (teensDigit == 19)
{
lblOutput.text += "Nineteen"
}
else
{
lblOutput.text = "Error."
}
}
// This is the clearLabels function
// e:MouseEvent is the click event experienced by the textInput
// void indicates that the function does not return a value
function clearLabels(e:MouseEvent):void
{
lblOutput.text = "";
}
答案 0 :(得分:1)
您引用teensDigit
就好像它是一个int,但是您创建了一个数组。将您的teens()
功能更改为
if (num == 10) {
依此类推,而不是teensDigit ==
或者,您可以简单地使用查找表。下面是您尝试执行的操作的简化版本,可以在干净的项目中进行编译。
convertNumber(7) // Outputs: seven
convertNumber(13) // Outputs: Thirteen
convertNumber(56) // Outputs: Fifty six
function convertNumber(i:int):void {
var tens:int = Math.floor(i / 10);
var ones:int = (i > 9 && i < 20) ? i : i % 10;
trace(lookup.double[tens] + lookup.single[ones])
}
var lookup:Object = {
"single":[
"",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
"Ten",
"Eleven",
"Twelve",
"Thirteen",
"Fourteen",
"Fifteen",
"Sixteen",
"Seventeen",
"Eighteen",
"Nineteen"
],
"double":[
"",
"",
"Twenty ",
"Thirty ",
"Forty ",
"Fifty ",
"Sixty ",
"Seventy ",
"Eighty ",
"Ninety ",
]
}