黑马程序员技术交流社区

标题: 空格与空的问题 [打印本页]

作者: §風過無痕§    时间: 2013-6-26 17:49
标题: 空格与空的问题
本帖最后由 §風過無痕§ 于 2013-6-27 13:01 编辑

先看以下代码:
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. ShowUI();//显示游戏名称
  6. string [] name=new string[2];//name[0]存游戏玩家A的名字 name[1]存游戏玩家B的名字
  7. Console.WriteLine("请输入玩家A的名字:");
  8. name [0] = Console.ReadLine();
  9. //判断用户输入的名字是否为空,若为空,则让用户重新输入
  10. while (name[0] == "" )//这里是要求不能为空,dan  但我希望连空格都不行  请问怎么改???????
  11. {
  12. Console.WriteLine("玩家A的名字不能为空,请重新输入");
  13. name[0] = Console.ReadLine();
  14. }
  15. Console.WriteLine("请输入玩家B的名字:");
  16. name[1] = Console.ReadLine();
  17. while (name[1] == "" || name[1] == name[0])
  18. {
  19. if (name [1] == "")//玩家名字为空          要求同上
  20. {
  21. Console.WriteLine("玩家B的名字不能为空,请重新输入:");
  22. }
  23. if(name [1]==name [0])//A与B重名
  24. {
  25. Console .WriteLine ("该名字已被其他用户使用,请重新输入");
  26. }
  27. name[1] = Console.ReadLine();
  28. }
  29. Console.Clear();//清屏

  30. ShowUI();
  31. Console.WriteLine("对战开始......");
  32. Console.WriteLine("{0}用A来表示",name [0]);
  33. Console.WriteLine("{0}用B来表示",name [1]);



  34. Console.ReadKey();
  35. }
  36. /// <summary>
  37. /// 该方法为实现游戏界面 显示游戏名称
  38. /// </summary>
  39. static void ShowUI()
  40. {

  41. Console.WriteLine("********************");
  42. Console.WriteLine("* *       令令令令        * *");
  43. Console.WriteLine("*   *   C# PK JAVA    *   *");
  44. Console.WriteLine("*             * *                 *");
  45. Console.WriteLine("********************");
  46. }
  47. }
复制代码

上述代码玩家A或者玩家B的名字为空格都行   

期望:输入空不成立   输入空格也不成立


作者: 许大虾    时间: 2013-6-26 17:59
本帖最后由 许大虾 于 2013-6-26 18:02 编辑

while (name[0] == "" )//这里是要求不能为空,dan  但我希望连空格都不行  请问怎么改???????

if (name [1] == "")//玩家名字为空          要求同上   

-------------------------------------------------   上面这两句你在 ""  中间要敲个空格键  进去    就可以实现了

-------加了空格键的代码:

  1. <P>    class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {

  5.    
  6.         ShowUI();//显示游戏名称

  7.         string [] name=new string[2];//name[0]存游戏玩家A的名字 name[1]存游戏玩家B的名字

  8.         Console.WriteLine("请输入玩家A的名字:");

  9.         name [0] = Console.ReadLine();

  10.         //判断用户输入的名字是否为空,若为空,则让用户重新输入

  11.         <STRONG><FONT color=red>while (name[0] == " " )//在符号加空格键 </FONT></STRONG>这里是要求不能为空,dan  但我希望连空格都不行  请问怎么改???????

  12.     {

  13.         Console.WriteLine("玩家A的名字不能为空,请重新输入");

  14.         name[0] = Console.ReadLine();

  15.     }

  16.         Console.WriteLine("请输入玩家B的名字:");

  17.         name[1] = Console.ReadLine();

  18.         while (name[1] == "" || name[1] == name[0])

  19.             {

  20.                 <STRONG><FONT color=red>if (name [1] ==" ") //在符号加空格键</FONT></STRONG> //玩家名字为空          要求同上
  21. {
  22. Console.WriteLine("玩家B的名字不能为空,请重新输入:");
  23. }
  24. if(name [1]==name [0])//A与B重名
  25. {
  26. Console .WriteLine ("该名字已被其他用户使用,请重新输入");
  27. }
  28. name[1] = Console.ReadLine();
  29. }
  30. Console.Clear();//清屏</P>
  31. <P>
  32. ShowUI();
  33. Console.WriteLine("对战开始......");
  34. Console.WriteLine("{0}用A来表示",name [0]);
  35. Console.WriteLine("{0}用B来表示",name [1]);
  36. Console.ReadKey();

  37. }

  38. /// <summary>

  39. /// 该方法为实现游戏界面 显示游戏名称

  40. /// </summary>

  41. static void ShowUI()

  42. {

  43. Console.WriteLine("********************");

  44. Console.WriteLine("* *       令令令令        * *");

  45. Console.WriteLine("*   *   C# PK JAVA    *   *");

  46. Console.WriteLine("*             * *                 *");

  47. Console.WriteLine("********************");

  48. }
  49. }</P>
复制代码

作者: 道法乾坤110    时间: 2013-6-26 18:24
如果单纯排除输入的只有一个空的的话,就直接在这里面添上一个就行了
while (name[0] == "" ||name[0]==" ")
在引号中间加一个空格。
如果是只要输入的字符串里面有空格就不执行的话,那就得
用substring把字符串离得每个字符都提出来,看看是不是空格。也就是name[0].SubString, 具体SubString 的用法,可以去网上搜一下,或者去MSDN查一下,都有例子,很容易理解的
作者: 转达小朋友    时间: 2013-6-26 18:38
接收用户输入时 做去除空格的处理

name[1] = Console.ReadLine().Trim();
作者: 吕柳根    时间: 2013-6-26 23:35
我也遇到了一样的问题,至今都没有得到解决
作者: 浪子小雨    时间: 2013-6-27 00:03
如果你单纯想要名字里不含空格的话就用Console.ReadLine().Trim()就可以了,但可以说有的人名字中可能会含有空格(李_刚),“_”代表空格,
或者你想要名字不能为空格的话就再判断下是否含有单个或者多个空格。

作者: 技术不精    时间: 2013-6-27 09:52
用一个循环对比每一个字符,如果为空跳出循环提示存在空字符串
作者: §風過無痕§    时间: 2013-6-27 13:00
灰常感谢各位的指导!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2