C#的ConsoleReadLine()问题

问题描述

我写了一个小程序,用于判断任一输入数据是否是素数,程序看上去没有问题,编译也没为题,但在执行时出错,我没找到原因。我只发现这个程序的while循环中的stringp=Console.ReadLine();语句,在第一次循环中能正确执行,读取从控制台键入的字符。但是当进入第二次循环时,该语句在我没有向控制台敲入任何字符的情况下(也没有按回车),执行了,且自动将一空字符窜""赋值给局部变量p,然后根据程序代码逻辑就抛出异常,结束程序运行。我想请教各位高人,给我解答解答,在下先谢过了。程序代码如下:usingSystem;namespaceConsoleApplication2{classClass1{publicstaticboolabc(inta){boolx=true;for(inti=2;i<a;i++){if(a%i==0)x=(!true);}returnx;}[STAThread]staticvoidMain(string[]args){//stringp;boolaa=true;while(aa){Console.WriteLine("请输入一个大于2的整数:");stringp=Console.ReadLine();try{//FileClose();inte=int.Parse(p);if(abc(e))Console.WriteLine("你输入的数是素数!");elseConsole.WriteLine("你输入的数不是素数!");Console.WriteLine("是否继续输入数(y/n)");charxx=(char)Console.Read();if(xx=='n'||xx=='N')aa=(!true);}catch(System.ExceptionE){Console.WriteLine("你输入的数据数型错误!"+E);Console.WriteLine(p);aa=(!true);}}}}}

解决方案

解决方案二:
up
解决方案三:
classClass1{publicstaticboolabc(inta){boolx=true;for(inti=2;i<a;i++){if(a%i==0)x=(!true);}returnx;}[STAThread]staticvoidMain(string[]args){//stringp;boolaa=true;while(aa){Console.WriteLine("请输入一个大于2的整数:");stringp=Console.ReadLine();try{//FileClose();inte=int.Parse(p);if(abc(e))Console.WriteLine("你输入的数是素数!");elseConsole.WriteLine("你输入的数不是素数!");Console.WriteLine("是否继续输入数(y/n)");charxx=(char)Console.ReadKey().KeyChar;if(xx=='n'¦¦xx=='N')aa=(!true);Console.WriteLine();//为了好看,无实际意义}catch(System.ExceptionE){Console.WriteLine("你输入的数据数型错误!"+E);Console.WriteLine(p);aa=(!true);}}}}

时间: 2024-10-18 11:59:35

C#的ConsoleReadLine()问题的相关文章

详解C# Socket简单例子(服务器与客户端通信)_C#教程

这个例子只是简单实现了如何使用 Socket 类实现面向连接的通信. 注意:此例子的目的只是为了说明用套接字写程序的大概思路,而不是实际项目中的使用程序.在这个例子中,实际上还有很多问题没有解决,如消息边界问题.端口号是否被占用.消息命令的解析问题等.. 下面是两个程序的代码,(两个程序均为控制台程序) 先发服务端的(Server)完整代码如下: 引入命名空间: using System.Net.Sockets; using SystemNet; using SystemThreading; 完