2015-06-21 43 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 
{ 
    // ... 
} 
相关问题