我今天晚上刚刚开始CodeCademy C#课程,并且有一个问题。我在转换数据类型部分中,并且能够“通过”练习,但是代码未输出预期的结果。当我运行程序时,它提示“您最喜欢的号码是多少?”如果我输入5,它会达到预期效果,并输出“您喜欢的数字是5”。我不明白的是,如果我输入five
,程序将抛出incorrect format error
。我以为Convert.ToInt32()方法应该接收字符串输入并将其转换为对应的整数?感谢您对我正在做的事情或错误想法的任何帮助。
static void Main(string[] args) {
// Ask user for fave number
Console.Write("Enter your favorite number?: ");
// Turn that answer into an integer
int faveNumber = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("your favorite number is:" + faveNumber);
}
答案 0 :(得分:7)
Convert.ToInt32()
采用仅包含数字字符的字符串。其他都是错误。将英语单词(例如"five"
)转换为数字值不是Convert.ToInt32()
所做的。
如果要将诸如"one hundred and fifteen"
之类的字符串转换为int
,则要复杂一些。这是我前段时间写的一个有趣的答案,它就是这样做的(尽管是long
而不是int
):
答案 1 :(得分:1)
Convert.ToInt32()仅能转换数字字符。它无法识别英语词汇。如果您想识别英语,则可以编写类似的功能来完成这项工作。
CREATE FUNCTION test.FORMATDATE(dateString CHAR(128), timeString VARCHAR(8))
RETURNS TIMESTAMP(6)
SPECIFIC FORMATDATE
DETERMINISTIC
LANGUAGE SQL
CONTAINS SQL
BEGIN ATOMIC
DECLARE tmpDateStr VARCHAR(128);--
DECLARE ret TIMESTAMP(6);--
DECLARE year VARCHAR(4);--
DECLARE month VARCHAR(2);--
DECLARE day VARCHAR(2);--
SET tmpDateStr = TRIM(REPLACE(REPLACE(dateString,'-',''),'/',''));--
IF (LENGTH(tmpDateStr) = 6 AND INTEGER(LEFT(tmpDateStr,2)) >= 70 ) THEN
SET tmpDateStr = '19' || tmpDateStr;--
END IF;--
IF (LENGTH(tmpDateStr) = 6 AND INTEGER(LEFT(tmpDateStr,2)) < 70 ) THEN
SET tmpDateStr = '20' || tmpDateStr;--
END IF;--
IF (LENGTH(tmpDateStr) != 8) THEN
RETURN TIMESTAMP('1970-01-01 00:00:00.000000');--
END IF;--
SET year = LEFT(tmpDateStr,4);--
SET month = SUBSTR(tmpDateStr,5,2);--
SET day = RIGHT(tmpDateStr,2);--
set ret = TIMESTAMP(year || '-' || month || '-' || day || ' ' || timeString ||'.000000');--
RETURN ret;--
END