2017-07-20 11 views
-1

でなければなりません。ユーザは と99の間の数字を入力する必要があり、プログラムはその数字を単語に変換します。プログラムは多少動作します。しかし、私が20と99の間の数字、例えば45を入力すると、プログラムは「40フォーティー」を印刷します。これは、「エラー#2007:パラメータテキストがnullでない必要があります。」というメッセージが出力セクションに表示されます。私は11から19までの数字を作ることもできないようです。数字を単語で表示する代わりに、結果に「エラー」と表示されます。プログラムが正しく機能し、10〜99の数字を正しく印刷するために、コードをうまく編集してください。エラー#2007:パラメータテキストは、私のプログラムで

// 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 = ""; 
} 

答えて

1

それがint型であるかのようにあなたはteensDigitを参照しているが、あなたは、配列を作成しました。その上

if (num == 10) { 

にごteens()機能を変更し、むしろ代わり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 ", 
    ] 
} 
関連する問題