【问题标题】:How to reverse an array using three separate methods in C#如何在 C# 中使用三个单独的方法来反转数组
【发布时间】:2016-10-09 04:12:10
【问题描述】:

我目前正在阅读一本电子书以学习 C#,而我目前正处于一个我被困住的地方。我觉得一旦我完成并理解了接下来的一点,它会真正加速我在接下来的课程中的理解和学习。

我目前面临的挑战我必须做到以下几点:

  • 制作一个使用方法来反转数组的程序。
  • 创建三种方法:一种创建数组,一种打印数组,一种反转数组。
  • 理想情况下,它允许用户输入所需的数组长度。
  • 不允许使用反向数组方法。

这是我到目前为止得到的代码,但我非常纠结于如何创建反向方法,我觉得我目前拥有的也不是必需的。我只需要额外的推动,让它点击到位,让我得到我需要的理解。如果您愿意,请随意放置与解决方案相反的提示/提示/建议。

谢谢大家。

using System;

命名空间 Using_methods_to_reverse_an_array { 课堂节目 { 静态 int[] CreateArray() { int[] 数组 = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 返回数组; } 静态无效 PrintNumbers() { foreach(CreateArray() 中的整数) { Console.WriteLine(数字); } } 静态无效主要(字符串 [] 参数) { int[] 数字 = CreateArray(); 打印数字(); Console.ReadLine(); } } }

【问题讨论】:

  • 您应该将numbers 传递给PrintNumbersPrintNumbers 不应调用 CreateArray。编写后,您还必须将 numbers 传递给您的反转方法。要反转数组,您需要知道如何交换两个项目,或者如何向后复制数组。
  • 感谢您的回复,您绝对正确,我认为您的评论对我接下来需要做的事情有很大帮助,特别是您告诉我 PrintNumbers 不应该打电话的事实创建数组。我会再试一次,看看我是怎么做的,在我先试一试之后,我会检查下面的例子。再次感谢。

标签: c# arrays methods reverse


【解决方案1】:
static int[] Reverse(int[] arr){
    int [] arr2 = new int[arr.Length];
    for (int i = arr.Length - 1, i2 = 0; i >= 0; i--, i2++)
    {
        arr2[i2] = arr[i];
    }
    return arr2;
}


static void PrintNumbers(int[] arr)
{
  foreach (int numbers in arr)
  {
      Console.WriteLine(numbers);
  }
}

static void Main(){
    int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int[] arr2 = Reverse(arr);
    PrintNumbers(arr2);
}

打印

10
9
8
7
6
5
4
3
2
1

【讨论】:

    【解决方案2】:

    非常感谢大家的帮助,在做了一些谷歌搜索和测试后,我的最终产品是这样的:

    using System;
    
    namespace Using_methods_to_reverse_an_array
    {
        class Program
        {
            static int[] CreateArray()
            {
                int[] array = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
                return array;
            }
    
            static void PrintNumbers(int[] array)
            {
                foreach (int numbers in array )
                {
                    Console.WriteLine(numbers);
                }
            }
    
            static void ReverseNumbers(int[] array)
            {
                for (int i = 0; i < array.Length/2; i++)
                {
                    int temp = array[i];
                    array[i] = array[array.Length - i - 1];
                    array[array.Length - i - 1] = temp;
                }
    
            }
    
            static void Main(string[] args)
            {
                int[] numbers = CreateArray();
                ReverseNumbers(numbers);
                PrintNumbers(numbers);
                Console.ReadLine();
            }
        }
    }
    

    【讨论】:

    • 谢谢,接下来我唯一需要弄清楚的是允许用户指定数组的长度然后反转它,而不是使用预定义的值。每次我进行编辑时,如果您输入“5”,它只会打印 0 五次,这不是我的意图。由于我对这一点非常坚持,我计划在继续学习之前再复习几次。
    • 数组值呢?会输入吗?
    • 基本上我想要发生的是用户能够指定数组的长度。我猜如果用户无法在数组中输入元素,它只会打印 0?非常感谢大家的帮助。
    • 所以我想你现在离完成你的项目只有一步之遥,因为你已经完成了它的主要部分,剩下的应该不会太难。祝你好运!!
    【解决方案3】:

    也许我理解错了,但我认为应该这样做:

        class Program
            {
                static int[] CreateArray()
                {
                    int[] array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
                    return array;
                }
    //I changed this to receive an input array
                static void PrintNumbers( int[] inputArray)
                {
                    foreach (int numbers in inputArray)
                    {
                        Console.WriteLine(numbers);
                    }
                }
    //this function should reverse any array passed to it
                static void ReverseArray(int[] inputArray)
                {
                    int len = inputArray.Length;
                    int[] newArray = new int[len];
                    foreach (int i in inputArray)
                    {
                        newArray[i] = inputArray[len - 1];
                        len--;
                    }
                }
                static void Main(string[] args)
                {
                    int[] numbers = CreateArray();
                    PrintNumbers(numbers);
                    ReverseArray(numbers);
                    //Console.ReadLine();
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      相关资源
      最近更新 更多