2017-03-18 59 views
-2

冷眼旁观,对不起我的英文。 我正在开发一个控制台程序,并在“if”方法中找到一个错误。我让你的程序的核心,因此您可以运行它,并帮我解决这个问题c#IndexOutOfRangeException布尔型字符数组

class Program 
{ 
    static void Main(string[] args) 
    { 
     String read = "auto"; 
     String write; 

     char[] read_arr = read.ToCharArray(); 


     Console.WriteLine("Escribe la siguiente palabra: {0}", read); 

     write = Console.ReadLine(); 
     char[] write_arr = write.ToCharArray(); 


     if (read_arr.Length == write_arr.Length) 
     { 
      if(read == write) 
      { 
       Console.WriteLine("Felicitaciones!!, Acertaste"); 

      } 
      else 
      { 
       for(int c = 0; c <= read_arr.Length; c++) 
       { 
        if (read_arr[c] != write_arr[c]) 
        { 
         Console.WriteLine("La letra '{0}' es incorrecta", write_arr[c]); 
        } 
       } 

       Console.WriteLine("Lo siento, te has equivocado"); 
      } 
     } 
     else 
     { 
      Console.WriteLine("Lo siento, te has equivocado"); 
     } 
     Console.ReadKey(); 
    } 
} 
+4

开始这不是你怎么做。下面是你是如何做的:你写*精确地*你输入的内容是什么,并且你准确地写* *你得到的错误是什么,并且正确*你在哪一行上得到它。 –

+0

你有'read_arr'和'write_arr',如果它们长度不一样,那么你的代码将无法访问(索引)索引'c'处的一个项目,所以你会得到一个错误。 – CodingYoshi

+0

如果你有一个名为'names'的数组有两个项目,并且你写了'var name = names [8]'或者除了0和1之外的任何索引,你将会得到相同的错误。 – CodingYoshi

回答

2
for(int c = 0; c <= read_arr.Length; c++) 

你开始为0,和迭代,直到长。你应该使用严格的比较。从c <= read_arr.Length删除“=”字符:

for(int c = 0; c < read_arr.Length; c++) 

3尺寸开始数组索引0 - 1 - 2,3,不包含为您0

+1

你的答案会解决问题,但你可能想清楚说明你删除了'=',以便OP了解变化。 – CodingYoshi

+0

是的,你是对的。有时候很少有变化很难被注意到,这是一个很好的说法。 – Feuby