//转化为二进制
        public  static void ER()
        {
            Console.WriteLine("-----当前是十进制转换二进制\n十进制数:");
            int shi = Convert.ToInt32(Console.Read());           
            Stack stAckER = new Stack();
           
            while (shi != 0)
            {
                int m = shi % 2;
                shi = shi / 2;
                stAckER.Push(m);
            }
            Console.Write("二进制为:");
            foreach (Object obj in stAckER )
                Console.Write("{0}", obj);
            Console.WriteLine("----    ");           
        }        //转化为八进制
        public  static void BA()
        {
            Console.WriteLine("-----当前是十进制转换八进制\n输入十进制数:");
            int shi = Convert.ToInt32(Console.Read());
            Stack stAckER = new Stack();
            
            while (shi != 0)
            {
                int m = shi % 8;
                shi = shi /8;
                stAckER.Push(m);
            }
            Console.Write("八进制为:");
            foreach (Object obj in stAckER)
                Console.Write("{0}", obj);
            Console.WriteLine("  ");
        }        //转化为十六进制
        public  static void LIU()
        {
            Console.WriteLine("-----当前是十进制转换十六进制\n十进制数:");
            int shi = Convert.ToInt32(Console.Read());
            Stack stAckER = new Stack();
            
            while (shi != 0)
            {
                int m = shi % 16;
                shi = shi / 16;
                stAckER.Push(m);
            }
            Console.Write("十六进制为:");
            foreach (Object obj in stAckER)
                Console.Write("{0}", obj);
            Console.WriteLine("  ");
        }        //用switch选择函数
        public static void sSwitch()
        {
              //--------------------------------------------------第二次循环到此就...
            string checkk = Console.ReadLine();             switch (checkk)
            {                               
                case "1": ER(); break;//调用二进制
                case "2": BA(); break;;//调用八进制
                case "3": LIU(); break;;//调用十六进制
                case "clr": Console.Clear(); Helpp(); break;
                default:
                    {
                        Helpp();
                        break;
                    }
            }
        }
//用来提示的
 public  static void Helpp()
        {
            Console.ForegroundColor = ConsoleColor.Green;           
            Console.WriteLine("_____________________________________________________________");
            Console.WriteLine("                                        转化为二进制    输入1");
            Console.WriteLine("                                        转化为八进制    输入2");
            Console.WriteLine("                                        转化为十六进制  输入3");
            Console.WriteLine("_____________________________________________________________");
        }
//不断循环调用的
 public static void zhu()
        {
            while (true)
            {
                sSwitch();
            }
        }//主函数
       static void Main(string[] args)
        {
            Console.Title = "各种进制转换";
            Console.ForegroundColor = ConsoleColor.Green;
            Helpp();
            zhu();
           
           // Console.ReadLine();
        }
/*
程序运行一次后回到那个while()循环中 
 public static void sSwitch()
        {
              //--------------------------------------------------第二次循环到此就...
            string checkk = Console.ReadLine();到这里不会提示输入  直接checkk+=1 之后运行
    问题好像跟静态有关 反正不知到怎么处理  这是最大的杯具另还有其他问题
 1 在switch()中加一个输入0 就退出程序
 2 这样不断的调用函数有什么副作用么?
 其他的还有很多改进的地方 若你看到这里 请帮忙提出来(完全否定也可以) 谢谢
*/

解决方案 »

  1.   

    .NET本身就提供这种功能你为什么要重写呢?
      

  2.   

    int shi = Convert.ToInt32(Console.Read());Console.Read() 只读入1个字符。所以string checkk = Console.ReadLine();
    读的是上次没读完的字符。改为ReadLine()就好了。1 在switch()中加一个输入0 就退出程序-> 做一个成员变量static bool isQuit = false;输入0的时候改为true,
       While(true) 改为 While(!isQuit)就可以了。
      

  3.   

    提点意见,这种小程序中,zhu()的方法就直接写到Main里好了。
    另外LZ的变量名定义的真是有点惨不忍睹,多看看优秀代码,改进一下吧。Console要想运行就必须while true了,没有什么其他影响。