如何使用用户输入填充数组而不在代码中自己指定数组的长度

时间:2012-12-16 15:44:15

标签: c# java arrays algorithm user-input

所以我试图用用户输入填充char数组。但是我不想自己指定数组的长度,从而限制用户输入的数量。例如,下面的代码只允许用户输入5个字符,然后退出。任何语言的代码都没问题。 (以下是C#)。

Console.Write("Enter a number of characters of your choice...click 1 to exit: ");
bool exitCondition;
int counter = 0;
char[] character = new char[5]; 
do
{
    exitCondition = false; 
    try
    {
        character[counter] = char.Parse(Console.ReadLine());
        if (character[counter] == '1')
            exitCondition = true; 
    }
    catch (Exception ex)
    {
        Console.WriteLine("Error: {0}", ex.Message); 
    }
    counter++;
}
while (exitCondition == false && counter < 5); 

4 个答案:

答案 0 :(得分:3)

数组的大小是静态的。使用java.util.ArrayList(来自Collection框架),它是可调整大小的数组。

List<Character> chars = new ArrayList<Character>();
chars.add('a');
chars.add('c');
chars.add('d');
  

List接口的可调整大小的数组实现。实现所有可选列表操作,并允许所有元素,包括null。除了实现List接口之外,此类还提供了一些方法来操作内部用于存储列表的数组的大小。

Ref

答案 1 :(得分:3)

您需要使用一个集合,该集合允许元素的集合增长或缩小。在Java中,ArrayList适用于您的场景。在C#中,您最有可能使用List

<强> C#

List<char> list = new List<char>();
list.Add('a');
list.Add('b');

<强>爪哇

List<Character> list = new ArrayList<Character>();
list.add('a');

答案 2 :(得分:1)

StringBuilder就是您所需要的

StringBuidler sb = new StringBuilder();
sb.append(c);
...

然后你可以从中获取char数组,如果你真的想要它

char[] a = sb.toString().toCharArray();

虽然通常它只是转换成一个字符串

 String s = sb.toString()

还有一种方法可以直接使用StringBuilder内部char []

 char c = sb.charAt(i)

答案 3 :(得分:0)

或者,如果您真的只想使用数组来隐藏某些原因:),那么您可以询问用户输入项的数量并相应地初始化数组。

谢谢, 海军