2009-04-07 130 views
0

我在这里有一个代码,我希望它会显示前10个,如果我点击它,它会再次显示第二批。我首先尝试使用我的第一个代码,它现在工作我正在处理数组它看起来不接受它for循环模量(%)

我评论的那个人不工作?这是错的吗? 谢谢

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); 
} 

回答

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(); 
} 
3

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

+0

感谢您的输入。所以模数运算符并不真正用于数组的长整型? – tintincutes 2009-04-07 19:00:12

+0

数组是一个对象。模运算符仅适用于数字基元类型。 http://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx – Will 2009-04-07 19:19:32

4

您需要:

if (i % 10 == 0) 

,而不是:

if (potenzen % 10 == 0) 
2

potenzen是一个数组,所以你也许尝试

if (i % 10 == 0) 

也许

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

你把一个数组国防部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(); 
} 
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个元素,所以你永远不会看到你的结果 -

这将打印他们,因为他们去。