我在这里有一个代码,我希望它会显示前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);
}
答案 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个元素,所以你永远不会看到你的结果 -
这将在他们去的时候打印出来。