2015-06-21 42 views
0

我試圖解決這個問題:改變的最後一個元素的字符串數組

「佩塔爾喜歡玩數字遊戲,他是非常好的用繩子太有一天,他決定發明總結的新遊戲。數字,他會得到一個數字,並會嘗試除以5,如果這個數字可以無餘數分割(例如15可以除以5而不剩餘,但17除以5是3,餘數2)Petar將添加這個數字的總和,但是如果這個數字不能被餘數分割,只剩下餘數將被加到總和上,在他完成數字後,Petar喜歡用字符串替換總和的一些數字,如果總和爲奇怪的是,他會用給定的字符串替換最後一位數字和所有與它相同的數字,如果總和爲偶數,他會執行相同,但是以第一位數字。例如,如果總和爲2434,並且字符串爲「a」,則結果爲a434。 你會得到一個開始號碼,一個結束號碼和一個字符串。你必須檢查開始號碼和結束號碼之間的所有號碼(沒有結束號碼),做Petar的算法,最後用上面描述的字符串替換數字。

輸入

輸入數據應當從控制檯讀取。它由三條線組成: •第一行將保存起始號碼; •第二行將保存結束編號; •第三個樣式將包含替換字符串 輸入數據將始終有效並採用所描述的格式。 「

我目前的代碼看起來像這樣,它編譯,但是當我輸入值我得到一個錯誤在第49行,我不能使用調試出於某種原因,我從VisualStudio中得到一個錯誤,所以可以請你看看這對我來說:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Numerics; 


namespace Petar_s_Game 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      ulong startNum = ulong.Parse(Console.ReadLine()); 
      ulong endNum = ulong.Parse(Console.ReadLine()); 
      string replacementStr = Console.ReadLine(); 
      List<ulong> list = new List<ulong>(); 
      ulong sum = 0; 
      List<string> sumStrArr = new List<string>(); 

      for (int i = 0; startNum < endNum; startNum++) 
      { 
       if (startNum % 5 == 0) 
       { 
        list.Add(startNum); 
       } 
       else 
       { 
        list.Add(startNum % 5); 
       } 
      } 
      foreach (var item in list) 
      { 
       sum =+ item; 
      } 

      string sumStr = sum.ToString(); 
      foreach (var item in sumStr) 
      { 
       sumStrArr.Add(Char.ToString(item)); 
      } 
      if (IsEven(sum)) 
      { 
       sumStrArr[0] = replacementStr; 
      } 
      if (IsEven(sum) == false) 
      { 
       sumStrArr[(sumStrArr.Capacity) - 1] = replacementStr; 
      } 
     } 
     public static bool IsEven(ulong n) 
     { 
      if (n % 2 == 0) 
      { 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 
    } 
} 
+0

那麼,至少你可以指出什麼是您的來源中的第49行。什麼是錯誤信息 – Steve

回答

3

您使用List<T>.Capacity容量爲total number of elements the internal data structure can hold without resizing

您應該使用List<T>.Count訪問量元素

替換此:

if (IsEven(sum) == false) 
{ 
    sumStrArr[(sumStrArr.Capacity) - 1] = replacementStr; 
} 

隨着

if (IsEven(sum) == false) 
{ 
    sumStrArr[sumStrArr.Count - 1] = replacementStr; 
} 

順便說一句,你似乎在呼籲IsEven這裏兩次 - 而不是做

if (IsEven(sum)) 
{ 
    // ... 
} 
if (IsEven(sum) == false) 
{ 
    // ... 
} 

這樣做:

if (IsEven(sum)) 
{ 
    // ... 
} 
else 
{ 
    // ... 
} 
相關問題