1

所以我试图用用户输入填充一个字符数组。但是我不想自己指定数组的长度,从而将用户限制在他们可以输入的数量。例如,我下面的代码将只允许用户输入 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

4 回答 4

3

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

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

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

参考

于 2012-12-16T15:45:56.440 回答
3

您需要使用一个集合,它允许元素的集合增长或缩小。在 Java 中,anArrayList适合您的场景。在 C# 中,您很可能会使用List.

C#

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

爪哇

List<Character> list = new ArrayList<Character>();
list.add('a');
于 2012-12-16T15:46:28.260 回答
1

StringBuilder 就是你所需要的

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

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

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

虽然通常它只是转换为字符串

 String s = sb.toString()

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

 char c = sb.charAt(i)
于 2012-12-16T16:29:04.413 回答
0

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

谢谢,海军

于 2012-12-16T18:22:02.217 回答