Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 项目8:奇怪的问题_C# - Fatal编程技术网

C# 项目8:奇怪的问题

C# 项目8:奇怪的问题,c#,C#,我试过解决欧拉计划 我相信我有正确的方法,但由于某种原因,我在下面的代码中得到了异常(“mscorlib.dll中发生了类型为'System.ArgumentOutOfRangeException'的未处理异常”),当I=494时。 我想电话号码是38。 字符串的长度也是1000,如调试器所示 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Thr

我试过解决欧拉计划 我相信我有正确的方法,但由于某种原因,我在下面的代码中得到了异常(“mscorlib.dll中发生了类型为'System.ArgumentOutOfRangeException'的未处理异常”),当
I=494
时。 我想电话号码是38。
字符串的长度也是1000,如调试器所示

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

namespace euler8
{
    class Program
    {
        static void Main(string[] args)
        {
           const String candidate =   "73167176531330624919225119674426574742355349194934"+
                                      "96983520312774506326239578318016984801869478851843"+
                                      "85861560789112949495459501737958331952853208805511"+
                                      "12540698747158523863050715693290963295227443043557"+
                                      "66896648950445244523161731856403098711121722383113"+
                                      "62229893423380308135336276614282806444486645238749"+
                                      "30358907296290491560440772390713810515859307960866"+
                                      "70172427121883998797908792274921901699720888093776"+
                                      "65727333001053367881220235421809751254540594752243"+
                                      "52584907711670556013604839586446706324415722155397"+
                                      "53697817977846174064955149290862569321978468622482"+
                                      "83972241375657056057490261407972968652414535100474"+
                                      "82166370484403199890008895243450658541227588666881"+
                                      "16427171479924442928230863465674813919123162824586"+
                                      "17866458359124566529476545682848912883142607690042"+
                                      "24219022671055626321111109370544217506941658960408"+
                                      "07198403850962455444362981230987879927244284909188"+
                                      "84580156166097919133875499200524063689912560717606"+
                                      "05886116467109405077541002256983155200055935729725"+
                                      "71636269561882670428252483600823257530420752963450";

            long max = 0;
            int length = candidate.Length;
            for (int i = 0; i < length - 13; i++)
            {
                string substring = candidate.Substring(i, i + 13);

                int [] x = new int [13];
                for(int j = 0; j<13; j++)
                    x[j]= int.Parse(substring[j].ToString());

                long product = 1;
                for (int k = 0; k < 13; k++)
                    product = product * x[k];

                if (product > max)
                    max = product;

            }

            Console.WriteLine(max.ToString());



        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
命名空间euler8
{
班级计划
{
静态void Main(字符串[]参数)
{
const String candidate=“7316717653133062491922511967446574742355349194934”+
"96983520312774506326239578318016984801869478851843"+
"85861560789112949495459501737958331952853208805511"+
"12540698747158523863050715693290963295227443043557"+
"66896648950445244523161731856403098711121722383113"+
"62229893423380308135336276614282806444486645238749"+
"30358907296290491560440772390713810515859307960866"+
"70172427121883998797908792274921901699720888093776"+
"65727333001053367881220235421809751254540594752243"+
"52584907711670556013604839586446706324415722155397"+
"53697817977846174064955149290862569321978468622482"+
"83972241375657056057490261407972968652414535100474"+
"82166370484403199890008895243450658541227588666881"+
"16427171479924442928230863465674813919123162824586"+
"17866458359124566529476545682848912883142607690042"+
"24219022671055626321111109370544217506941658960408"+
"07198403850962455444362981230987879927244284909188"+
"84580156166097919133875499200524063689912560717606"+
"05886116467109405077541002256983155200055935729725"+
"71636269561882670428252483600823257530420752963450";
长最大值=0;
int length=候选者.length;
对于(int i=0;i

有人发现了这个问题吗?

看起来这是因为对
.SubString()
的工作原理有误解

string substring = candidate.Substring(i, i + 13);
最有可能是:

string substring = candidate.Substring(i, 13);

.SubString()
是:
.SubString(startPosition,length)
因此添加
i+13
并不会使您获得接下来的13个字符,而是从起始位置
i
开始的下一个
i+13

字符看起来这是因为对
.SubString()
工作原理的误解

string substring = candidate.Substring(i, i + 13);
最有可能是:

string substring = candidate.Substring(i, 13);
.SubString()
是:
.SubString(startPosition,length)
因此添加
i+13
并不会使您获得接下来的13个字符,而是从起始位置
i
开始的下一个
i+13
字符需要一个起始位置加上长度,而不是结束位置

所以只要使用

string substring = candidate.Substring(i, 13);
需要起始位置加上长度,而不是起始位置和结束位置

所以只要使用

string substring = candidate.Substring(i, 13);

@siva.k您提供的签名实际上给人的印象是您应该通过
i+13
。实际上,它是
子字符串(int startIndex,int length)
。没关系,你已经改了。(Y) @georgem搜索它时说是40824@siva.k您提供的签名实际上给人的印象是您应该通过
i+13
。实际上,它是
子字符串(int startIndex,int length)
。没关系,你已经改了。(Y) @georgem搜索它时说是40824,我没有投反对票,但我认为这与以下事实有关:有很多问题具有这种特殊的结构:“我写了一些东西,但它不起作用。这是代码。”Eric Lippert解释如何自己调试这些问题。你提供的信息比这些问题通常要多一些,但你也可以通过运用文章中的技巧自己解决问题。我没有投反对票,但我认为这与以下事实有关:有很多问题具有这种特殊的结构:“我写了一些东西,但它不起作用。Eric Lippert,解释如何自己调试这些问题。您提供了比这些问题通常更多的信息,但您也可以通过应用本文中的技术自己解决问题。