[英]Modulus (%) in for-loop
我在這里有一個代碼,我希望它將顯示前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);
}
你需要:
if (i % 10 == 0)
並不是:
if (potenzen % 10 == 0)
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();
}
將模運算符應用於多頭數組是可疑的。
potenzen是一個數組,所以您可以嘗試
if (i % 10 == 0)
或者可能
if (potenzen[i] % 10 == 0)
您要使用數組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();
}
嘗試將其更改為:
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個元素,因此您永遠都看不到結果-
這將在他們進行打印。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.