簡體   English   中英

for循環中的模量(%)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM