c#我必须输入同样的东西3次,它也工作,我如何解决这个问题

本文关键字:何解决 工作 解决 问题 输入 3次 | 更新日期: 2023-09-27 17:51:00

这只是我做的一个简单的程序,所以需要一个密码才能打开chrome。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.IO;

namespace Bitch
{
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Type Help If You Need More Info:");

        if(Console.ReadLine() == "UneedPassMate")
        {
            System.Diagnostics.Process.Start("chrome.exe");
            System.Environment.Exit(0);
        }
        if(Console.ReadLine() == "Help")
        {
            Console.WriteLine("To Open Chrome'n You Will Need To Enter A Password>");
            Console.ReadLine();
        }
        if (Console.ReadLine() == "help")
        {
            Console.WriteLine("To Open Chrome'n You Will Need To Enter A Password>");
            Console.ReadLine();
        }
        }

}
}

但是每次我键入"帮助"或"帮助"时,直到我键入其中任何一个3次才会发生任何事情。有人能解决这个问题吗?这也不是第一次了。

c#我必须输入同样的东西3次,它也工作,我如何解决这个问题

您只需要读取一次用户的输入。试试这个:

    var input = Console.ReadLine();
    if(input == "UneedPassMate")
    {
        System.Diagnostics.Process.Start("chrome.exe");
        System.Environment.Exit(0);
    }
    if (input.ToLower() == "help")
    {
        Console.WriteLine("To Open Chrome'n You Will Need To Enter A Password>");
        Console.ReadLine();
    }

每次执行Console.ReadLine()时,程序都会等待输入。

你应该执行一次,把结果赋值给一个变量,然后检查这个变量。

Console.WriteLine("Type Help If You Need More Info:");
string input = Console.ReadLine();
if(input == "UneedPassMate")
{
    System.Diagnostics.Process.Start("chrome.exe");
    System.Environment.Exit(0);
}
if (input == "Help" || input == "help")
{
    Console.WriteLine("To Open Chrome'n You Will Need To Enter A Password>");
    Console.ReadLine();
}        

与纯函数式编程语言相比,函数不一定是纯的,每次调用它们时很可能返回不同的输出。Console.ReadLine()是一个"不纯"函数的例子,因为对于你的3次调用,它从控制台输入读取一个字符串,并返回用户输入的任何内容。

如果您只希望用户输入一次,则需要存储调用Console.ReadLine()的结果,然后将该结果用于后续测试。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.IO;

namespace Bitch
{
class Program
{
static void Main(string[] args)
{
    Console.WriteLine("Type Help If You Need More Info:");
    string input = Console.ReadLine(); // Only ask for input once not 3 times!
    if(input == "UneedPassMate")
    {
        System.Diagnostics.Process.Start("chrome.exe");
        System.Environment.Exit(0);
    }
    if(input == "Help")
    {
        Console.WriteLine("To Open Chrome'n You Will Need To Enter A Password>");
        Console.ReadLine();
    }
    if (input == "help")
    {
        Console.WriteLine("To Open Chrome'n You Will Need To Enter A Password>");
        Console.ReadLine();
    }
}

}
}