小弟刚刚学习C#,入门问题...

来源:百度知道 编辑:UC知道 时间:2024/06/11 11:24:05
using System;
class Class1
{
static void Main(string[] args)
{
int i;
char c;
while(true)
{
i=Console.Read();
if(i==-1)break;
c=(char) i;
Console.WriteLine("Echo:{0}", c);
}
Console.WriteLine("Done");
}
}
输入GOOD 回车
运行结果:
Echo:G
Echo:O
Echo:O
Echo:D
Echo:
Echo:

就是这么个小程序了,书上一模一样抄下来的
主要有一下几个问题

1.为啥就是不执行最后一行呢???没有显示DONE的字样
2.为什么i=-1的时候退出循环??
3.为什么Console.WriteLine("Echo:{0}", c);这条语句执行了6次,而且后两次没有结果?

问题貌似有点过于基础了,各位达人不要笑话小弟啊,虚心请教.

最后你是按回车确定输入的,因此循环里面多了两个控制字符,ascii码分别是13和10,这两个字符在屏幕上是打印不出来的。
把这句Console.WriteLine("Echo:{0}", c); 换成Console.WriteLine("Echo:{0}", i); 打印每个字符的ascii码试试。
输入ctrl+z就可以令i=-1(windows操作系统的约定),则执行if后面的break,就能退出当前循环,也就是与之嵌套的while。然后程序就执行while后面的语句,即可以打印出"DONE"。