黑马程序员技术交流社区

标题: 怎么使bool类型判断结果输出中文 [打印本页]

作者: 月儿圆    时间: 2013-6-3 22:43
标题: 怎么使bool类型判断结果输出中文
小白最近在写密码登陆的系统,但是最后不知道怎么弄了
//Console.WriteLine("请输入您的年龄:");
            //int age = Convert.ToInt32(Console.ReadLine());
            //if (age >= 18)
            //{
            //    Console.WriteLine("符合条件,可以查看");//大于等于18提示输出信息
            //}
            //else
            //{
            //    if (age < 10)
            //    {
            //        Console.WriteLine("不符合条件,不允许查看");
            //    }
            //    else
            //    {
            //        Console.WriteLine("请您确认是否查看确认请输入YES否则输入NO");

作者: 张成智    时间: 2013-6-3 22:56
木看明白你倒底想问啥呢?
作者: 一直在努力    时间: 2013-6-3 23:03
你可以把字串转成字符然后在强转为整型

下面是网上找到的 他是通过中文为两位判断的

         /// <summary>
         /// 判断句子中是否含有中文
         /// </summary>
         /// <param >字符串</param>
         public bool WordsIScn(string words)
         {
             string TmmP;

             for (int i = 0; i < words.Length; i++)
             {
                 TmmP = words.Substring(i, 1);

                 byte[] sarr = System.Text.Encoding.GetEncoding("gb2312").GetBytes(TmmP);

                 if (sarr.Length == 2)
                 {
                     return true;
                 }
             }
             return false;
         }


作者: 胡章诚    时间: 2013-6-3 23:32
看了半天,把你的问题看懂了,大哥语文功底要提高啊,要不然问问题不方便,呵呵呵呵,你看看我的理解对不对:
你要用户输入一个年龄,判断,如果年龄>=18,侧可以查看,<10的时候一定不能查看,在两者之间的有一个选择,看或者不看,最终来实现是否查看的功能,我的代码如下:
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入您的年龄:");
            int age = Convert.ToInt32(Console.ReadLine());
            bool result=false;                  //设置一个bool只来记录用户是否满足查看的条件,出事为false

            if (age >= 18)
            {
                Console.WriteLine("符合条件,可以查看");//大于等于18提示输出信息
                result = true;                     //满足条件则 将记录改为true
            }
            else
            {
                if (age < 10)
                {
                    Console.WriteLine("不符合条件,不允许查看");            
                }
                else
                {
                    Console.WriteLine("请您确认是否查看确认请输入YES否则输入NO");
                    string input = Console.ReadLine();
                    if (input == "YES")
                    {
                        Console.WriteLine("请查看");
                        result = true;               //用户选择“YES”时将记录改为true
                    }
                    else if (input == "NO")
                    {
                        Console.WriteLine("您选择了不查看,请离开");
                    }
                    else
                    {
                        Console.WriteLine("您的输入是非法的");
                    }
                }             //最后的结果是 如果用户满足查看的条件,result==true,反之result==false    根据这个继续实现你的功能
            }
            Console.ReadKey();
        }
    }
作者: xiangsoft    时间: 2013-6-4 00:13
没有明白LZ到底想表达什么...{:soso_e141:}
作者: 王洪磊    时间: 2013-6-4 11:10
Console.WriteLine("请输入您的年龄:");
            int age = Convert.ToInt32(Console.ReadLine());
            bool result = false;                  //用bool来判断用户是否满足查看的条件,false不能看,true则能看

            if (age >= 18)
            {
                result = true;                     
            }
            else
            {
                if (age < 10)
                {
                    result = false;
                }
                else
                {
                    Console.WriteLine("请您确认是否查看确认请输入YES否则输入NO");
                    string input = Console.ReadLine();
                    if (input == "YES")
                    {
                        result = true;               
                    }
                    else if (input == "NO")
                    {
                        result = false;
                    }
                    else
                    {
                        Console.WriteLine("您的输入是非法的");
                    }
                }            
            }
            if (result == true)
            {
                Console.WriteLine("符合条件,可以查看");
            }
            else
            {
                Console.WriteLine("不符合条件,不允许查看或者您选择了不查看");
            }
            Console.ReadKey();
作者: 月儿圆    时间: 2013-6-4 22:18
sdjngl123 发表于 2013-6-3 22:53
你说清楚你的想法,想用bool类型怎么着?你这道题目是什么?

见丑了,好好学学语文去:lol
作者: 月儿圆    时间: 2013-6-4 22:20
王洪磊 发表于 2013-6-4 11:10
Console.WriteLine("请输入您的年龄:");
            int age = Convert.ToInt32(Console.ReadLine());
   ...

嗯嗯,这些都些出来了,愁的是,如果一开始用户输入的是非int类型如a,那么程序就崩了
作者: 关关雎鸠    时间: 2013-6-5 10:25
月儿圆 发表于 2013-6-4 22:20
嗯嗯,这些都些出来了,愁的是,如果一开始用户输入的是非int类型如a,那么程序就崩了 ...

程序崩了是因为输入非数字的字符,转换后就出错了。

可以用try..catch捕获异常再处理。
  1. try{
  2.   int age = Convert.ToInt32(Console.ReadLine()); //当这里转换出错就会跳到catch中
  3. 。。。
  4. }
  5. catch{
  6.   Console.WriteLine("您输入的不是整型数字,请再次输入!")
  7. }
  8. 。。。
复制代码
大概就是这样,省略号就是你另外的代码。
作者: 月儿圆    时间: 2013-6-5 12:58
关关雎鸠 发表于 2013-6-5 10:25
程序崩了是因为输入非数字的字符,转换后就出错了。

可以用try..catch捕获异常再处理。大概就是这样,省 ...

谢谢,已经有了更好的方案
int age=0;
bool isnonum = true;

while(isnonum)
{
  Console.WriteLine("请输入您的年龄:");
    string str = Console.ReadLine();
    if(int.TryParse(str,out age))
  {
        isnonum = false;
  }
  else
  {
        Console.WriteLine("您输入的不是数字:");
  }
}
作者: 月儿圆    时间: 2013-6-5 13:00
一直在努力 发表于 2013-6-3 23:03
你可以把字串转成字符然后在强转为整型

下面是网上找到的 他是通过中文为两位判断的

日后再学吧
作者: 关关雎鸠    时间: 2013-6-5 13:35
月儿圆 发表于 2013-6-5 12:58
谢谢,已经有了更好的方案
int age=0;
bool isnonum = true;

int.TryParse(str, out age)试着转换成int类型,转不成输出age,你这个age值是初始值0。难道你要用户用0这个年龄吗?显然不好。

该try的时候要try的。。




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