C# 将数组拆分为新数组并用空格打印
这个程序将对数字进行排序,并根据它们是否大于或小于100,将它们放入自己的数组中 我遇到的问题是打印此阵列。我希望行中的最后一个数字后面不要跟空格。我已经试过很多次了,现在我想我应该在这里问一下 我知道Console.Write(“\b”)但是我更喜欢找到一种编辑循环的方法,这样我就不必这样做了。代码如下:C# 将数组拆分为新数组并用空格打印,c#,arrays,sorting,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;
}
}
使用系统;
使用System.Linq;
类拆分数组
{
公共静态void Main(字符串[]args)
{
int[]myArray=GetNumberFromConsole();
int[]smallNumbers=newint[myArray.Length];
int[]bigNumbers=newint[myArray.Length];
int-bigIndex=0;
int-littleIndex=0;
for(int i=0;i100)
{
bigNumbers[bigIndex++]=myArray[i];
}
else if(myArray[i]<100)
{
smallNumbers[littleIndex++]=myArray[i];
}
}
控制台。写(“大:”);
对于(int i=1;i
您可以捕获您的控制台
if(i != littleIndex - 1)
{
Console.Write(" ");
}
littleIndex-1是最后一次执行循环,因此这将阻止它添加尾随空格。只需在打印大数字时对其执行相同的操作。有一个内置的实用程序
我在玩更多的游戏,只是想在运行这个循环之前尝试发布数组中的第一个对象(也改变了循环,所以第一个项目不会被打印两次)
谢谢大家-我解决了它!:)
使用系统;
使用System.Linq;
命名空间数组
{
类拆分数组
{
公共静态void Main(字符串[]args)
{
int[]myArray=GetNumberFromConsole();
int[]smallNumbers=newint[myArray.Length];
int[]bigNumbers=newint[myArray.Length];
int-bigIndex=0;
int-littleIndex=0;
for(int i=0;i100)
{
bigNumbers[bigIndex++]=myArray[i];
}
else if(myArray[i]<100)
{
smallNumbers[littleIndex++]=myArray[i];
}
}
控制台。写(“大:”);
Write($“{bigNumbers[0]}”);
对于(int i=1;i
我尝试将其添加到代码中并运行了该程序。循环的bigIndex没有打印第一个数字。也许我误解了你的意思?检查for循环中的bigIndex@emsimpson92的回应并不影响bigIndex不打印第一个数字。我按照他的指示,在两个地方都添加了编辑。我以前也试过这个。那是因为你从I=1
开始,而不是I=0
啊,是的,现在试过了。成功了:)我一秒钟前解决了它,与你的略有不同,我会接受你的回答:)谢谢!实际上,这个方法与linq没有任何关系,它是从.NET2.0开始存在的
var str = string.Join(" ",bigNumbers);
Console.WriteLine("Big: " + str);
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;
}
}
}