3

目前,我的应用程序显示此错误消息:

“值 '' 不能转换为数字。”

这并不让我感到惊讶。该变量刚刚添加,因此对于在我创建新字段之前使用该应用程序的任何人来说,该变量都是一个空字符串。

<td><cfif studentRecruitComments neq "">
        <a href="javascript: showContent('#studentRecruitComments#')">
            #studentRecruit#
        </a>
     <cfelse>
         #studentRecruit#
     </cfif>
</td>
<cfset tstudentRecruit = tstudentRecruit + studentRecruit>

最后的数学是一个计数系统。该变量tstudentRecruit在此行之前也设置为 0,因此它肯定位于 studentRecruit 变量中。将空字符串转换为整数的正确方法是什么?这里有什么明显的错误吗?

4

2 回答 2

6

您可以简单地使用 val() 函数,该函数返回数字,或者如果转换失败,则返回零。因此,您不必检查您的变量是否为数字。

<cfset tstudentRecruit = tstudentRecruit + val(studentRecruit)>
于 2013-01-17T14:48:52.107 回答
5

我会稍微更改代码以阅读:

<td>
    <cfif NOT Len(trim(studentRecruitComments))>
        <a href="javascript: showContent('#studentRecruitComments#')">
            #studentRecruit#
        </a>
     <cfelse>
         #studentRecruit#
     </cfif>
</td>
<cfif NOT isNumeric(studentRecruit)>
    <cfset studentRecruit = 0>
</cfif>
<cfset tstudentRecruit = tstudentRecruit + studentRecruit>

我在这里做的几件事:

首先,更改cfif studentRecruitComments neq ""以实际检查字符串的长度,而不是检查它是否为空。我正在添加修剪以删除可能存在的任何空白。

然后我检查变量studentRecruit是一个数字,如果不是,我将它设置为 0,这样你的代码就不会失败。

显然我并不真正了解您的代码的上下文,因为我认为它可以进一步改进。

但是,使用我的代码片段会导致错误消失。

高温高压

于 2013-01-16T22:24:36.100 回答