我刚开始学习C#。我正在读一本书,其中一个例子是:
using System;
public class Example
{
public static void Main()
{
string myInput;
int myInt;
Console.Write("Please enter a number: ");
myInput = Console.ReadLine();
myInt = Int32.Parse(myInput);
Console.WriteLine(myInt);
Console.ReadLine();
}
}
当我运行并输入说'五'并点击返回时,我得到'输入字符串格式不正确'错误。我不明白的是,我将字符串myInput转换为数字不是我吗?微软称In32.Parse'将数字的字符串表示形式转换为32位有符号整数等价物。那么当我输入五个单词时怎么会不起作用呢?它应该转换为整数不应该...混淆。谢谢你的建议。
答案 0 :(得分:5)
'五'不是数字。它是一个4个字符的字符串,没有数字。 parse32正在寻找的是包含数字数字字符的STRING。你必须改为“5”。
答案 1 :(得分:2)
Int32.Parse期望的字符串表示是一个十进制数字序列(基数为10),例如"2011"
。它不接受自然语言。
基本上是这样做的:
return 1000 * ('2' - '0')
+ 100 * ('0' - '0')
+ 10 * ('1' - '0')
+ 1 * ('1' - '0');
您可以通过传递不同的NumberStyles来稍微自定义Int32.Parse。例如,NumberStyles.AllowLeadingWhite允许输入字符串中的前导空格:" 2011"
。
答案 2 :(得分:1)
表示数字的单词不会被转换;它将表示数字的字符转换为实际数字。
字符串中的“5”作为ASCII(或unicode)字符表示存储在内存中.5的ASCII为0x35(十六进制)或53(十进制)。值为“5”的整数作为实际5存储在存储器中,即0101二进制数。