C#中如何申请动态数组
4个回答
展开全部
C#中并没有你想要的不定长数组,我给你两个解决方案:
第一种是让用户一次性输入一个用“,”分隔的字符串,如“1,2,3,4,5”,然后后台根据元素的个数确定数组的长度:
Console.WriteLine("Please input numbers in format (1,2,3,4,...100)");
var input = Console.ReadLine();
var strings = input.Split(',');
var numbers = new double[strings.Length];
for (int i = 0; i < strings.Length; i++)
{
numbers[i] = Convert.ToDouble(strings[i]);
}
bool flag = true;
double temp;
int numLength = numbers.Length;
//sorting an array
for (int i = 1; (i <= (numLength - 1)) && flag; i++)
{
flag = false;
for (int j = 0; j < (numLength - 1); j++)
{
if (numbers[j + 1] > numbers[j])
{
temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
flag = true;
}
}
}
Console.WriteLine(string.Join(",", numbers));
第二种方法可以用List<double>来实现动态加载新的元素:
var input = string.Empty;
var numberList = new List<double>();
while (!input.Equals("Sort"))
{
Console.WriteLine("Please input a number, input \"Sort\" to start sorting the array.");
input = Console.ReadLine();
if (!input.Equals("Sort"))
{
numberList.Add(Convert.ToDouble(input));
}
}
Console.WriteLine("Original array: {0}", string.Join(",", numberList));
numberList.Sort(new DoubleComparer());
Console.WriteLine("Sorted array: {0}", string.Join(",", numberList));
Console.WriteLine("Sorting");
其中的DoubleComparer的定义为:
class DoubleComparer : IComparer<double>
{
public int Compare(double x, double y)
{
return x > y ? -1 : x == y ? 0 : 1;
}
}
展开全部
用List就可以了,List<类型> list=new List<类型>();
就可以动态的添加删除了。
如果需要转化为数组,类型[] array=list.ToArray();就可以了。
就可以动态的添加删除了。
如果需要转化为数组,类型[] array=list.ToArray();就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
bool b = true;//表示是否循环输入
int[] intarr = new int[5];//定义初始大小为5的数组
int i = 0;//表示在数组中的索引
do
{
Console.WriteLine("请输入数字:");
string ss = Console.ReadLine();
try
{
int sum = Convert.ToInt32(ss);
if (i == intarr.Length - 1)
{
//输入的数字达到数组上限。重新定义双倍空间的数组
int[] intarr1 = new int[intarr.Length * 2];
for (int j = 0; j < intarr.Length; j++)
{
//把intarr中第j个数组赋值到intarr1中第j个
intarr1[j] = intarr[j];
}
intarr = intarr1;//转换后重新赋值给定义的数组
}
intarr[i] = sum;
i++;
Console.WriteLine("是否继续输入?(y/n)");
string str = Console.ReadLine();
if (str != "y")
{
b = false;
}
}
catch (Exception)
{
Console.WriteLine("输入字符串不是数字,是否重新输入?(y/n)");
string str = Console.ReadLine();
if (str != "y")
{
b = false;
}
}
} while (b);
Console.WriteLine("输入数字如下:");
for (int k = 0; k < intarr.Length; k++)
{
Console.WriteLine(intarr[k] + "==");
}
至于排序的方法,自己可以写一个类似于冒泡排序的
int[] intarr = new int[5];//定义初始大小为5的数组
int i = 0;//表示在数组中的索引
do
{
Console.WriteLine("请输入数字:");
string ss = Console.ReadLine();
try
{
int sum = Convert.ToInt32(ss);
if (i == intarr.Length - 1)
{
//输入的数字达到数组上限。重新定义双倍空间的数组
int[] intarr1 = new int[intarr.Length * 2];
for (int j = 0; j < intarr.Length; j++)
{
//把intarr中第j个数组赋值到intarr1中第j个
intarr1[j] = intarr[j];
}
intarr = intarr1;//转换后重新赋值给定义的数组
}
intarr[i] = sum;
i++;
Console.WriteLine("是否继续输入?(y/n)");
string str = Console.ReadLine();
if (str != "y")
{
b = false;
}
}
catch (Exception)
{
Console.WriteLine("输入字符串不是数字,是否重新输入?(y/n)");
string str = Console.ReadLine();
if (str != "y")
{
b = false;
}
}
} while (b);
Console.WriteLine("输入数字如下:");
for (int k = 0; k < intarr.Length; k++)
{
Console.WriteLine(intarr[k] + "==");
}
至于排序的方法,自己可以写一个类似于冒泡排序的
追问
我就是申请一个动态数组而已,怎么如此麻烦啊
追答
这不是麻烦不麻烦的事情。动态数组当然是动态的,即数组的空间长度是不固定的。可根据输入的次数来固定空间数组的长度。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-19
展开全部
不知道啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询