首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Console.ReadLine()函数不起作用

Console.ReadLine()函数不起作用
EN

Stack Overflow用户
提问于 2010-08-10 17:37:17
回答 2查看 12.5K关注 0票数 1

请参阅下面的程序:

代码语言:javascript
运行
复制
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace FileOperation1
{
    class FileMain
    {
        static void Main(string[] args)
        {
            FileMain fm = new FileMain();
            char ch = fm.Menu();
            while (ch != '0')
            {
                switch (ch)
                { 
                    case '0':
                        break;
                    case '1':
                        //Console.WriteLine("This featute is not implemented till now.");
                        break;
                    case '2':
                        Console.Write("Enter the name of the file: ");
                        String FileName = Console.ReadLine();// ReadLine() method is not workin here
                        FileOperation Fo=new FileOperation();
                        Console.WriteLine("\n" + Fo.FileRead(FileName, FileMode.Open, FileAccess.Read));
                        break;
                    case '3':
                        //Console.WriteLine("This featute is not implemented till now.");
                        break;
                    default:
                        Console.WriteLine("Invalid choice. Enter again.");
                        break;
                }
                ch = fm.Menu();
            }
        }
        private char Menu()
        {
            Console.WriteLine("\n\t***File Operations***");
            Console.WriteLine("1. Create a new file");
            Console.WriteLine("2. Open a file");
            Console.WriteLine("3. Edit an existing file");
            Console.WriteLine("0. Exit");
            Console.Write("\nEnter your choice: "); 
            char ch = Convert.ToChar(Console.Read()); //Read() Method is not working properly
            return ch;
        }
    }
    public class FileOperation
    {
        private String FileRead(FileStream Fs)
        {
            StreamReader Sr = new StreamReader(Fs);
            Sr.BaseStream.Seek(0, SeekOrigin.Begin);
            String str = ""+(Char)Sr.Read();
            String ret = "";
            while (!Sr.EndOfStream)
            {
                ret += str;
                str = ""+(Char)Sr.Read();
            }
            Sr.Close();
            return ret;
        }
        public String FileRead(String FileName, FileMode Fm, FileAccess Fa)
        {
            FileOperation Fo = new FileOperation();
            FileStream Fs = new FileStream(FileName, Fm, Fa);
            String ret = Fo.FileRead(Fs);
            Fs.Close();
            return ret;
        }
    }
}

我使用的是Visual Studio 2005。在这里,Console.ReadLine()Console.Read()函数在此程序中无法正常工作。为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-11 20:22:23

Console.ReadLine()替换Console.Read()方法。有关Console.Read()Console.ReadLine()方法的更多信息,请参阅MSDN。编辑后的程序如下:

代码语言:javascript
运行
复制
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace FileOperation1
{
    class FileMain
    {
        static void Main(string[] args)
        {
            FileMain fm = new FileMain();
            char ch = fm.Menu();
            while (ch != '0')
            {
                switch (ch)
                {
                    case '0':
                        break;
                    case '1':
                        //Console.WriteLine("This featute is not implemented till now.");
                        break;
                    case '2':
                        Console.Write("Enter the name of the file: ");
                        String FileName = Console.ReadLine();// ReadLine() method is not workin here
                        FileOperation Fo = new FileOperation();
                        Console.WriteLine("\n" + Fo.FileRead(FileName, FileMode.Open, FileAccess.Read));
                        break;
                    case '3':
                        //Console.WriteLine("This featute is not implemented till now.");
                        break;
                    default:
                        Console.WriteLine("Invalid choice. Enter again.");
                        break;
                }
                ch = fm.Menu();
            }
        }
        private char Menu()
        {
            Console.WriteLine("\n\t***File Operations***");
            Console.WriteLine("1. Create a new file");
            Console.WriteLine("2. Open a file");
            Console.WriteLine("3. Edit an existing file");
            Console.WriteLine("0. Exit");
            Console.Write("\nEnter your choice: ");
            char ch = Convert.ToChar(Console.ReadLine()); //Read() Method is not working properly
            return ch;
        }
    }
    public class FileOperation
    {
        private String FileRead(FileStream Fs)
        {
            StreamReader Sr = new StreamReader(Fs);
            Sr.BaseStream.Seek(0, SeekOrigin.Begin);
            String str = "" + (Char)Sr.Read();
            String ret = "";
            while (!Sr.EndOfStream)
            {
                ret += str;
                str = "" + (Char)Sr.Read();
            }
            Sr.Close();
            return ret;
        }
        public String FileRead(String FileName, FileMode Fm, FileAccess Fa)
        {
            FileOperation Fo = new FileOperation();
            FileStream Fs = new FileStream(FileName, Fm, Fa);
            String ret = Fo.FileRead(Fs);
            Fs.Close();
            return ret;
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2010-08-10 17:44:47

您可能想尝试Console.ReadKey(true),这将等待下一次按键,然后继续,函数返回一个ConsoleKeyInfo。在引用ConsoleKey属性中的键值时,可以使用switch语句:

代码语言:javascript
运行
复制
    var c = Console.ReadKey();
    Console.WriteLine();
    Console.WriteLine(c.Key.ToString());

    // Prints
    //a
    //A

    switch(c.Key)
    {
        case ConsoleKey.D0:
            //User entered 0
            Console.WriteLine("Exiting...");
            break;
        case ConsoleKey.D1:
            //User entered 1
            Console.WriteLine("You chose to create a new file!");
            break;
        case ConsoleKey.D2:
            //User entered 2
            Console.WriteLine("You chose to open a file!");
            break;
        case ConsoleKey.D3:
            //User entered 3
            Console.WriteLine("You chose to edit an existing file!");
            break;
        default:
            Console.WriteLine("No response for that key");
            break;
    }

    Console.ReadLine();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3447646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档