我的foreach循环太多次了,我不明白为什么。该方案应该低谷1-100,并总结每个数字的四次方。List <>太多循环
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
int sum = 0;
string temp = "";
List<int> digits = new List<int>();
for (long i = 2; i < 100; i++)
{
temp = i.ToString();
for(int y = 0; y < temp.Length; y++)
{
digits.Add(Convert.ToInt32(temp.Substring(y,1)));
foreach(int j in digits)
{
sum += Convert.ToInt32(Math.Pow(j,4));
Console.WriteLine("foreach loop: i = {0}, y = {1}, sum = {2}, j = {3}, digits count = {4}",i,y,sum,j,digits.Count);
}
}
Console.WriteLine("i = {0}, sum = {1}", i, sum);
sum = 0;
digits.Clear();
}
}
}
下面是输出例如
foreach loop: i = 10, y = 0, sum = 1, j = 1, digits count = 1
foreach loop: i = 10, y = 1, sum = 2, j = 1, digits count = 2
foreach loop: i = 10, y = 1, sum = 2, j = 0, digits count = 2
i = 10, sum = 2
foreach loop: i = 11, y = 0, sum = 1, j = 1, digits count = 1
foreach loop: i = 11, y = 1, sum = 2, j = 1, digits count = 2
foreach loop: i = 11, y = 1, sum = 3, j = 1, digits count = 2
i = 11, sum = 3
foreach loop: i = 12, y = 0, sum = 1, j = 1, digits count = 1
foreach loop: i = 12, y = 1, sum = 2, j = 1, digits count = 2
foreach loop: i = 12, y = 1, sum = 18, j = 2, digits count = 2
i = 12, sum = 18
为什么foreach循环上的2位的数字3次?在回路后清除数字列表
让我们以10为例。
temp = "10";
temp.Length = 2;
second for loop (y) runs twice. 1 < 2
digits gets filled twice
foreach runs three times
然后好像你所有环路位数每个数字在列表中。两个数字=加一个数字时一个循环,然后再加两个数字时循环两次,因为列表中包含两个数字 – Fabio
这是因为你有一个超过数字的循环for(int y = 0; y
juharr
您需要在第二个'for'循环之外移动'foreach'循环。 – Fabio