问题描述
我写了一个小程序,用于判断任一输入数据是否是素数,程序看上去没有问题,编译也没为题,但在执行时出错,我没找到原因。我只发现这个程序的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);}}}}