错误 #2007:参数文本必须为非空

Posted

技术标签:

【中文标题】错误 #2007:参数文本必须为非空【英文标题】:Error #2007: Parameter text must be non-null 【发布时间】:2017-12-26 20:52:37 【问题描述】:

在我的程序中,用户必须输入一个数字 10 和 99,程序会将数字转换为单词。该程序有些工作;但是,当我输入一个介于 20 和 99 之间的数字时,例如 45,程序将打印出“四十五四十”。这是输出部分中出现“”的时候。我似乎也无法使数字从 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 = "";

【问题讨论】:

【参考方案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 ",
    ]

【讨论】:

以上是关于错误 #2007:参数文本必须为非空的主要内容,如果未能解决你的问题,请参考以下文章

Firebird 列可空非空修改

trustAnchors 参数必须为非空错误 |摇篮 |科尔多瓦

Graphiql 中标记为非空的所有字段和参数:Sangria,scala

java.security.InvalidAlgorithmParameterException:Linux上的trustAnchors参数必须为非空,或者为啥默认的信任库为空[重复]

Kotlin 自定义对话框参数指定为非空

IllegalArgumentException:指定为非空的参数为空