for循环中的模数(%)

时间:2009-04-07 15:24:44

标签: c# arrays

我在这里有一个代码,我希望它会显示前10个,如果我点击它,它将再次显示第二个批次。我用我的第一个for-code尝试了这个,现在我正在使用数组它似乎不接受它

我评论的那个不行吗?这是错的吗? 谢谢

long [] potenzen = new long[32];
potenzen[0] = 1;

for (int i = 1; i < potenzen.Length; ++i)
{
    potenzen[i] = potenzen[i-1] * 2;
    //if (potenzen % 10 == 0)
    //    Console.ReadLine();
}

foreach (long elem in potenzen)
{
    Console.WriteLine(" " + elem);
}

6 个答案:

答案 0 :(得分:4)

你需要:

if (i % 10 == 0)

而不是:

if (potenzen % 10 == 0)

答案 1 :(得分:4)

long [] potenzen = new long[32];
potenzen[0] = 1;
for (int i = 1; i < potenzen.Length; ++i)
{ 
  potenzen[i]=potenzen[i-1]*2;
  Console.WriteLine(potenzen[i-1]);
  if (i % 10 == 0)
    Console.ReadLine();
}

更符合您的要求。改进之处在于将数据操作逻辑与数据显示逻辑分开。

long [] potenzen = new long[32];
potenzen[0] = 1;
for (int i = 1; i < potenzen.Length; ++i)
  potenzen[i]=potenzen[i-1]*2;

for (int i = 0; i < potenzen.Length; ++i)
{
  Console.WriteLine(potenzen[i]);
  if (i % 10 == 0)
    Console.ReadLine();
}

当然,你可以在没有数组的情况下做到这一点

long potenzen = 1;
for (int i = 1; i < 32; ++i)
{ 
  Console.WriteLine(potenzen);
  potenzen = potenzen * 2;
  if (i % 10 == 0)
    Console.ReadLine();
}

答案 2 :(得分:3)

将模数运算符应用于long数组是可疑的。

答案 3 :(得分:2)

potenzen是一个数组,所以你可以试试

if (i % 10 == 0)

或者

if (potenzen[i] % 10 == 0)

答案 4 :(得分:1)

你正在使用一个数组mod 10 - 充其量,在一种不安全的语言中,你将在内存地址上进行模运算。

如果您只想将行更改为:

,这应该可以正常工作
// if you don't want to pause the first time you run it, replace with:
// if (i > 0 && i % 10 == 0) {
if (i % 10 == 0) {
    Console.ReadLine();
}

答案 5 :(得分:1)

尝试将其更改为:

long [] potenzen = new long[32];
potenzen[0] = 1;
Console.WriteLine(potenzen[0]);
for (int i = 1; i < potenzen.Length; ++i)
{
    potenzen[i]=potenzen[i-1]*2;
    Console.WriteLine(potenzen[i]);
    if (i % 10 == 0)
    {
        var s = Console.ReadLine();
        // break if s == some escape condition???
    }
}

现在,你永远不会打印,除非你完全完成你的第一个for循环。我的猜测是你不允许完整的32个元素,所以你永远不会看到你的结果 -

这将在他们去的时候打印出来。