我无法将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);但似乎没有任何工作,所以我知道我现在缺少编程方面的知识。
我收到此错误: 索引超出了数组的范围。
感谢所有帮助!
答案 0 :(得分:3)
使用if(inputArray.length > 1)
代替if (inputArray[1] != null)
答案 1 :(得分:3)
在检查数组是否为空之前,需要测试数组的长度。
所以改变这个
if (inputArray[1] != null)
类似
if (inputArray.Length > 1 && inputArray[1] != null)
正如评论中所提到的,测试
的代码越正确if (inputArray.Length > 1)
因为inputArray[1] != null
永远不会成真。
答案 2 :(得分:2)
我只想在你的代码中添加一个东西。
如果inputArray包含多于或等于两个元素,则此条件inputArray [1]!= null将始终出现。因为如果要拆分数组,它将不会返回'null'并且您已经指定了RemoveEmptyEntries,所以只需检查前面答案中提到的长度。无需检查其null或空。
答案 3 :(得分:1)
我正在检查你的代码,如果你的输入类似于“打开xxx”那么它会正常工作,你写的两个单词之间必须有一个空格,因为你使用
input.Spli(new char{' '} )
然而,在尝试获取任何数组元素之前,最好检查数组长度。
if (inputArray.Length > [Array element index that you want to obtain ] )
{
//TO DO
}
else
{
// TO DO
}
请记住,您的输入字符串必须包含多个单独的单词,这些单词用空格分隔,否则如果您的输入字符串不包含许多单独的单词,那么您的inputarray将只有一个元素