-2

我无法将 inputArray[1] 的值作为我的 if 语句的空值。

下面看一下代码:

static void GetInput()
    {
       string input = Console.ReadLine();
       string[] inputArray = input.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

        switch (inputArray[0])
        {
            case "exit":
                System.Console.WriteLine(inputArray[0]);
                Console.WriteLine("Exiting...");
                break;
            case "help":
                System.Console.WriteLine(inputArray[0]);
                Help();
                GetInput();
                break;
            case "openall":
                if (inputArray[1] != null) ;
                {
                    System.Console.WriteLine(inputArray[0] + " " + inputArray[1]);
                    fileExt = inputArray[1];
                    OpenFiles();
                    GetInput();
                }
                break;                         
        }
    }

现在我尝试了很多方法,而不是 if (inputArray[1] != null); 但似乎没有任何工作,所以我知道我现在缺少的编程知识中有一些东西。

我收到此错误:索引超出了数组的范围。

感谢所有帮助!

4

4 回答 4

3

使用if(inputArray.length > 1)代替if (inputArray[1] != null)

于 2013-06-21T04:19:24.480 回答
3

在检查它是否为空之前,您需要测试数组的长度。

所以改变这个

if (inputArray[1] != null)

类似于

if (inputArray.Length > 1 && inputArray[1] != null)

C# 数组长度

正如评论中提到的,更正确的代码是测试

if (inputArray.Length > 1)

inputArray[1] != null永远不会是真的。

于 2013-06-21T04:20:53.513 回答
2

我只想在您的代码中添加一件事。

如果 inputArray 包含多于或等于两个元素,则此条件 inputArray[1] != null 将始终出现。因为如果您要拆分数组,它不会返回“null”并且您已经指定了 RemoveEmptyEntries,所以只需检查前面答案中提到的长度即可。无需检查其 null 或空。

于 2013-06-21T04:23:06.227 回答
1

我正在检查您的代码,如果您的输入类似于“open xxx”,那么它会正常工作,因为您使用的两个单词之间必须有空格

   input.Spli(new char{' '} ) 

但是最好在尝试获取任何数组元素之前检查数组长度。

 if (inputArray.Length > [Array element index that you want to obtain ] ) 
            { 
                //TO DO 
            } 
            else 
            { 
                // TO DO
            } 

请记住,您的输入字符串必须包含许多用空格分隔的单独单词,否则如果您的输入字符串不包含许多单独的单词,那么您的 inputarray 将只有一个元素

于 2013-06-21T04:32:22.280 回答