C#中的Console.Read()和Console.ReadLine()

问题描述:

C#中的Console.Read()和Console.ReadLine()
刚刚用C#写了一个顺序表,由于成员函数的实现有点长因此不再赘述而且代码也应该没什么问题,我就把出现问题的主函数贴在下面:
public static void Main()
{
Seqlist list = new Seqlist(50);
int num = 0;
num=Console.Read();
while(num!=-1)
{
list.insertlast(num);//在表尾插入元素
num=Console.Read();
}
list.display();//显示建立的顺序表
Console.ReadKey();
}
但是把上面的代码中的num=Console.Read()改为string str=Console.ReadLine();num=Convert.ToInt32(str);就没问题了.这是为什么,由于我刚自学C#那位大哥能帮我解释一下,然后用Console.Read()应该怎么写.
1个回答 分类:综合 2014-10-23

问题解答:

我来补答
错在这里,while(num != -1)
Ascii 表中,只有 0 到 127 的数字,是没有 "-1".所以这个loop是不会停的.
而且.Console.Read() 只读一个char 然后reutrn 它相应的 Ascii Number.所以当你输入" -1" 时,它只读 "-",而等下一次才读"1".
如果你一定要用Console.Read()的话,来都入"-1"
while (flag)
{
if (input == 45) //读到"-"
{
int temp = Console.Read();
if (temp == 49) //读到 "1"
{
flag = false;
}
else
{
//这里的input 是 ascii number
list.insertlast(input);//在表尾插入元素
input = Console.Read();
}
}
else
{
//这里的input 是 ascii number
list.insertlast(input);//在表尾插入元素
input = Console.Read();
}
}
 
 
展开全文阅读
剩余:2000
上一页:合外力做功,