1

假设我有一个数字数组:

int[] that = new [] {1, 2, 3, 2, 4, 8, 9, 7};

我正在尝试显示它们,以便增加的数字有自己的行。例如,结果将是:

1 2 3

2 4 8 9

7

我可以使用第一行,

for (int i = 1; i < that.Length; i++) 
{
    if (that[i-1] < that[i]) 
    {
        Console.Write(that[i-1] + " ");
    }
}

问题是这适用于第一行,因为 1-3 正在增加但在那之后停止。我不确定如何继续写 2 4 8 9,然后是 7。

4

4 回答 4

1

我觉得这是家庭作业,所以我将把实际的编码留给你。但这里是如何用简单的语言做到这一点:

  1. 有一个变量来存储之前的值。我们称它为 oldValue,并从零开始(如果您只在数组中使用正数)。
  2. 一次遍历一个数组。
  3. 检查该数字是否大于 oldValue。
  4. 如果为 FALSE,则打印换行符。C# 中的“\n”。
  5. 打印该数字并使 oldValue 等于该数字。
  6. 除非您的号码已完成,否则请获取下一个号码并转到第 3 步。
于 2013-10-10T18:31:22.740 回答
0

您永远不会创建新行。

int[] arr = new[] {1, 2, 3, 2, 4, 8, 9, 7};

for(var i = 0; i < arr.Length; i++){
 if(i == 0 || ((i < arr.Length - 1) && arr[i] < arr[i + 1])){
  Console.Write(arr[i]);
 } else {
  Console.Write("{0}\n", arr[i]);
 } 
}

输出:

123
2489
7

几点说明:

  • 避免this用作变量名。这是一个保留关键字。
  • \n用作换行符。
于 2013-10-10T18:33:34.797 回答
-1

There are a number of ways you can do this, either by appending a string with characters until a lesser one is reached and then using the Console.WriteLine() command to write the entire string at once, or (the easier way given your code) which is to simply test for the new value being lesser than the previous and inserting a newline character into your text.

// Start at zero
for (int i = 0; i < this.Length; i++) 
{
    // If this is not the first element in the array
    //   and the new element is smaller than the previous
    if (i > 0 && this[i] < this[i-1]) 
    {
        // Then insert a new line into the output
        Console.Write(Environment.NewLine);
    }
    Console.Write(this[i] + " ");
}
于 2013-10-10T18:38:23.760 回答
-1
        int[] numbers = new int[] { 1, 2, 3, 2, 4, 8, 9, 7 };

        String orderedNumbers = String.Empty;

        for (int i = 0; i < numbers.Length; i++)
        {
            if (i == 0 || numbers[i] > numbers[i - 1])
            {
                orderedNumbers += numbers[i].ToString();
            }
            else
            {
                orderedNumbers += System.Environment.NewLine + numbers[i].ToString();
            }
        }

        MessageBox.Show(orderedNumbers);
于 2013-10-10T18:41:39.547 回答