将阵列拆分为新阵列并使用空格打印

时间:2018-06-15 17:54:13

标签: c# arrays sorting

该程序将对数字进行排序,并根据它们是否大于或小于100,将它们放入自己的数组中。

我遇到的问题是打印这个数组。我想在线上的最后一个数字,后面没有空格。我已经尝试了很多次来让它现在起作用,并且我想在这里问。

我知道Console.Write("\b");但我更喜欢找到一种编辑循环的方法,所以我不必这样做。这是代码:

using System;
using System.Linq;

class SplitArray
{
    public static void Main(string[] args)
    {
        int[] myArray = GetNumbersFromConsole();

        int[] smallNumbers = new int[myArray.Length];
        int[] bigNumbers = new int[myArray.Length];

        int bigIndex = 0;
        int littleIndex = 0;

        for (int i = 0; i < myArray.Length; i++)
        {
            if(myArray[i] > 100)
            {
                bigNumbers[bigIndex++] = myArray[i];
            }
            else if(myArray[i] < 100)
            {
                smallNumbers[littleIndex++] = myArray[i];
            }
        }

        Console.Write("Big: ");

        for (int i = 1; i < bigIndex; ++i)
        {
            Console.Write(bigNumbers[i]);
            Console.Write(" ");
        }

        Console.WriteLine();
        //Console.WriteLine($"{bigNumbers[0]}");


        Console.Write("Little: ");

        for (int i = 0; i < littleIndex; i++)
        {
            Console.Write($"{smallNumbers[i]}");
            Console.Write(" ");
        }

        Console.ReadLine();
    }

    static int[] GetNumbersFromConsole()
    {
        int count = int.Parse(Console.ReadLine());
        int[] result = new int[count];

        for (int i = 0; i < count; ++i)
        {
            result[i] = int.Parse(Console.ReadLine());
        }

        return result;
    }
}

3 个答案:

答案 0 :(得分:1)

您可以在if语句中捕获Console.Write(" ");

if(i != littleIndex - 1)
{
  Console.Write(" ");
}

littleIndex - 1是你的循环最后一次执行,所以这只会阻止它添加尾随空格。只需在打印出来时为你的大数字做同样的事情。

答案 1 :(得分:1)

内置实用程序string.Join

post

答案 2 :(得分:0)

我正在玩更多的东西,只是想在运行这个循环之前尝试在数组中发布第一个对象(也改变了循环,因此第一个项目没有被打印两次)。

谢谢大家 - 我解决了! :)

using System;
using System.Linq;

namespace Arrays
{
class SplitArray
{
    public static void Main(string[] args)
    {
        int[] myArray = GetNumbersFromConsole();

        int[] smallNumbers = new int[myArray.Length];
        int[] bigNumbers = new int[myArray.Length];

        int bigIndex = 0;
        int littleIndex = 0;

        for (int i = 0; i < myArray.Length; i++)
        {
            if(myArray[i] > 100)
            {
                bigNumbers[bigIndex++] = myArray[i];
            }
            else if(myArray[i] < 100)
            {
                smallNumbers[littleIndex++] = myArray[i];
            }
        }

        Console.Write("Big: ");
        Console.Write($"{bigNumbers[0]} ");
        for (int i = 1; i < bigIndex; i++)
        {
            Console.Write(bigNumbers[i]);

            if (i != bigIndex - 1)
            {
                Console.Write(" ");
            }
        }

        Console.WriteLine();

        Console.Write("Little: ");

        Console.Write($"{smallNumbers[0]} ");

        for (int i = 1; i < littleIndex; i++)
        {
            Console.Write($"{smallNumbers[i]}");

            if (i != littleIndex - 1)
            {
                Console.Write(" ");
            }
        }
        Console.ReadLine();
    }

    static int[] GetNumbersFromConsole()
    {
        int count = int.Parse(Console.ReadLine());
        int[] result = new int[count];

        for (int i = 0; i < count; ++i)
        {
            result[i] = int.Parse(Console.ReadLine());
        }

        return result;
    }
}
}