using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace switchStatementExercise
{
class Program
{
static void Main(string[] args)
{
String response;
Console.WriteLine("Please Vote for your president out of the 7 following, Joseph Mason, James Long, Ben Harding, Georgia Mason, Keith Webb, Mark Grimley, Max Gridley");
response = Console.ReadLine();
string fullNameJoe = response;
var names = fullNameJoe.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);
string firstName = names[0];
string lastName = names[1];
Console.WriteLine(lastName);
if (response.Equals(fullNameJoe) || response.Equals(firstName) || response.Equals(lastName))
{
Console.WriteLine("You have voted for " + fullNameJoe);
Console.WriteLine(fullNameJoe);
}
else if (fullNameJoe.Length > 1 && lastName == null)
{
Console.WriteLine("You need a last name");
}
else
{
Console.WriteLine("Please enter a first name and last name");
}
}
}
}
所以我要做的就是检查姓氏是否为空,所有用户都输入了姓氏,但我收到了这个错误。
未处理的异常:System.IndexOutOfRangeException:索引超出了数组的范围。 在C:\ Users \ Joe \ Desktop \ cSharpWeek1 \ switchStatementExercise \ switchStatementExercise \ Program.cs:line 21
中的switchStatementExercise.Program.Main(String [] args)
任何帮助或重定向到答案都会很棒!
答案 0 :(得分:0)
索引超出了数组的范围
表示无论您在那里输入什么内容,names[1]
之后都没有Split
(最有可能)。所以,如果你输入" alex;" - 把...忘了吧。
您可以查看
if (names.Length < 2)
{
Console.WriteLine("You need first and last name");
return;
}
另一方面,为什么&#34 ;;&#34;?它会期待打字&#34; alex; morgan&#34;。我们通常输入&#34; alex morgan&#34;然后分成&#34; &#34 ;.您可以使用任何字符拆分
fullNameJoe.Split(" ,;-/".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
在第二部分
if (response.Equals(fullNameJoe) || response.Equals(firstName) || response.Equals(lastName
这没有多大意义。第一个条件永远是真的。第二和第三个条件是真是假。你可能需要做的是创建一个列表
var presidents = "Joseph Mason, James Long, Ben Harding, Georgia Mason, Keith Webb, Mark Grimley, Max Gridley".
Split(",".ToCharArray()).Select(p => p.Trim()).ToArray()
然后检查第一个条件(可选)[if (names.Length < 2)
]。或者您可以直接进行名称检查
if (names.Contains(response.Trim(), StringComparer.OrdinalIgnoreCase))
{
Console.WriteLine("yes");
}