我有将每个2个数字转换为特定字符的代码,此代码有效,但输出带有不需要的单词“null”。我想删除它。我无法确定哪部分代码是错误的。
var encoded_numbers:String = "102030";
var sub:String;
var decode_string:String;
for (var i2:int = 0; i2 < encoded_numbers.length; i2 += 2)
{
sub = encoded_numbers.charAt(i2) + encoded_numbers.charAt(i2 + 1);
//trace(sub);
switch(sub)
{
case "10":
decode_string += "A";
break;
case "20":
decode_string += "B";
break;
case "30":
decode_string += "C";
break;
}
}
trace(decode_string);//convert
输出字符串:
nullABC
答案 0 :(得分:5)
您的decode_string的初始值为null。只需按如下方式分配初始值:
var decodeString:String = "";
答案 1 :(得分:4)
&#34; ...但是输出带有不需要的单词&#34; null&#34;。我想删除它。我无法确定哪部分代码是错误的。&#34;
当您说:var decode_string:String;
时,声明了一个变量,但它没有值,所以默认情况下会给出&#34; null&#34;的结果。以后出现的问题是,当您使用+=
运算符进一步附加ABC
字母时,最终字符串现在变为nullABC
。
要修复:
使用String = "";
...
var encoded_numbers:String = "102030";
var sub:String = "";
var decode_string:String = "";
还要考虑substr
提取部分文本(而不是charAt
)..
for (var i2:int = 0; i2 < encoded_numbers.length; i2 += 2)
{
sub = encoded_numbers.substr(i2, 2); //gets 2 letters from position of i2
//trace(sub);
switch(sub)
{
case "10":
decode_string += "A";
break;
case "20":
decode_string += "B";
break;
case "30":
decode_string += "C";
break;
}
}
trace(decode_string);//convert