2015-12-14 3 views
-3
public class LetterArray 
{ 
internal static string[] Alphabet() { 
    var letterValues = new string[25]; 

    letterValues[0] = "A"; 
    letterValues[1] = "B"; 
    letterValues[2] = "C"; 
    letterValues[3] = "D"; 
    letterValues[4] = "E"; 
    letterValues[5] = "F"; 
    letterValues[6] = "G"; 
    letterValues[7] = "H"; 
    letterValues[8] = "I"; 
    letterValues[9] = "J"; 
    letterValues[10] = "K"; 
    letterValues[11] = "L"; 
    letterValues[12] = "M"; 
    letterValues[13] = "N"; 
    letterValues[14] = "O"; 
    letterValues[15] = "P"; 
    letterValues[16] = "Q"; 
    letterValues[17] = "R"; 
    letterValues[18] = "S"; 
    letterValues[19] = "T"; 
    letterValues[20] = "U"; 
    letterValues[21] = "V"; 
    letterValues[22] = "W"; 
    letterValues[23] = "X"; 
    letterValues[24] = "Y"; 
    letterValues[25] = "Z"; 

    return letterValues; 
} 
} 


public class Decipher 
{ 
public static void Main() //Main method 
{ 
    int res = 34; 
    string[] letterValues = LetterArray.Alphabet(); 
    //Create for loop that runs through every possible shift value 
    for (int shift = 0; shift <= 25; shift++) { 
     Console.WriteLine("\nShift Value = " + shift + ": "); 
    // For each character in the text file 
     foreach (var ch in ReadText.cipherTxt()) { 
      if (ch == ' ') { 
      } else { 
       for (int i = 0; i <= 25; i++) { 
        if ((ch.ToString().ToUpper()) == letterValues[i]) { 
         res = i; 
        } 
       } 

       if (shift > res) { 
        Console.WriteLine(letterValues[26 - (shift - res)][0]); 
       } else { 
        Console.WriteLine(letterValues[res - shift][0]); 
       } 
      } 
     }      
    } 
} 

System.IndexOutOfRangeException: Индекс находился вне границ массива.System.IndexOutOfRangeException: Индекс находился вне границ массива - C#

Не знаю, почему это происходит, я пробовал просмотреть код, чтобы найти вещи, перечисленные вне диапазона массива, но ничего не видящего? Я надеялся, что кто-то сможет просветить меня на том, что я делаю неправильно, или как я могу сортировать эту ошибку. Он говорит, что это происходит где-то в LetterArray.Alphabet и Decipher.Main.

+2

'вар letterValues ​​= новая строка [ 25]; '--->' var letterValues ​​= новая строка [26]; 'Голосование закрывается как опечатка. – dasblinkenlight

+0

Вы пытаетесь поместить 26 элементов в массив, который может содержать только 25 элементов. Первые 25 работ, а последнее, естественно, выходит за рамки –

ответ

2

var letterValues = new string[25] создает массив с 25 позициями.

Когда вы letterValues[25] = "Z"; вы обращаетесь к позиции 26, так как он начинается с 0.

Так что вам просто нужно изменить размер массива до 26.

var letterValues = new string[26] 
Смежные вопросы