2016-10-21 22 views
0

インデックスが33行目と46行目の範囲外になっています。これはなぜですか? 配列を逆転しようとしています。私はエラーコードの意味を知っていますが、なぜ私はそれを取得しているのかわかりません。 行33 - 反転された文字列= ReverseArray(作成中)。 行46 - return reverseCraft [5];なぜインデックスが配列の境界外にあるのですか

 //make an array to be reversed 
     string[] craftArray = new string[5] { "Iron", "Stone", "Copper", "Steel", "Clay" }; 


     //create a variable to hold return value 
     string[] crafting = new string[5]; 





     //function call the ReverseCraft method 
     string reversed = ReverseArray(crafting); 

     //Report the calculation to the user 
     Console.Write("The array reversed is" + reversed); 



    } 
    public static string ReverseArray(string[] craft) 
    { 
     //create a variable and reverse 
     string[] reverseCraft = new string[5] { craft[4], craft[3], craft[2], craft[1], craft[0] }; 
     //return value 
     return reverseCraft[5]; 

    } 
} 
} 
+1

'reverseCraft [5]'は '[4]'でなければなりません。配列はゼロベースなので – Steve

+0

行数も範囲​​外です – Plutonix

+0

メソッドReverseArrayは文字列ではなく文字列の配列を返します。 – NineBerry

答えて

2

あなたの逆の方法は、署名が間違っています。それはこのように、string[]を返す必要があります:

public static string[] ReverseArray(string[] craft) { 
    //create a variable and reverse 
    string[] reverseCraft = new string[5] { craft[4], craft[3], craft[2], craft[1], craft[0] }; 
    //return value 
    return reverseCraft; 
} 

の代わりにこのコードでは、あなたがする必要があるすべては、印刷が正常に結果である:それはライン

にエラーを投げ

string[] reversed = ReverseArray(crafting); 
//Report the calculation to the user 
Console.Write("The array reversed is " + string.Join(", ", reversed)); 
+0

ありがとうございました。 string.joinを使用する代わりにこれを行う別の方法がありますか? – Xoax

+0

@Xoaxはい、ループを書くことができます。 – dasblinkenlight

+1

いずれにしても、ありがとうございます。素晴らしい仕事をした。 – Xoax

0

return reverseCraft [5];

リバースクラフト[5]がないためです。

reverseCraftの最初の要素は、reverseCraft [0]で、最後の要素は、reverseCraft [4]です。

+0

この部分を修正しました。ありがとうございました – Xoax

関連する問題