3

我有一个字符数组,声明为char[ ] array = new char[20]; 关于这个,我有以下查询:

  • 每个位置的默认值是 '\0000' 吗?

  • 我如何将字符附加到这个数组中?(例如,每次我要求用户输入字母时,我都会在数组中按顺序存储字母)

请多多包涵。我可以很容易地在 C++ 中实现这些,但我是 java 新手。提前致谢!

4

4 回答 4

1

数组在 Java 中被初始化为 0。

数组也是固定大小的,因此如果要添加超过 20 个字符,则必须创建一个更大的新数组并将旧值复制到那里,或者使用更合适的类,如 StringBuilder。

于 2013-07-10T10:44:25.400 回答
1

您需要阅读有关从输入流中读取的更多信息。您可以从这里开始,但还有其他精彩的教程。

不完全回答您的问题(因为它仍然模棱两可),但在下文中,我从输入中读取了 5 个字符并输出了排序后的字符数组。这将帮助您入门。

public static void main(String[] args) throws IOException {

        char arr[] = new char[5];
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Enter input characters and press enter: "); 
        for(int i=0; i<arr.length; i++) {
            arr[i] = (char) br.read();
        }       
        br.close();
        Arrays.sort(arr);
            System.out.println("Sorted Array: "+String.valueOf(arr));   
    }

控制台 I/O:

输入输入字符并按回车:
zeros
排序数组:eorsz

此外,正如 Rohit 已经提到的,您应该查找String 类及其广泛的实用程序函数。此外,正如您还提到您可能不知道数组中元素的数量,您可能希望将其视为 a List,在这种情况下您应该使用List<Character>.

于 2013-07-10T11:05:06.267 回答
0

当您创建一个数组时,它的索引将填充您用于该数组的类型的默认值。

因此,对于 a int[]0将填充值,对于char[]value \u0000-将填充空字符。有关其他类型的默认值,请参阅JLS - 变量的初始值。

我如何将字符附加到这个数组中?

为此,您必须维护从 0 开始为空的当前索引,并且每次在该索引处插入元素时,将其加一。

如果您有可变增加的数组,则此过程通常不够可行。您应该考虑使用 aList<Character>代替。


顺便说一句,如果您正在从用户那里读取一个字符串,并尝试将该字符串中的每个字符添加到一个字符数组中,那么您不需要手动执行此操作。String 类提供了一个方法 - String.toCharArray(),它从您的 String 对象中创建一个字符数组。

于 2013-07-10T10:49:47.430 回答
0

您可以按如下方式附加数组中的所有字符

    char[ ] array = new char[20];
    StringBuilder t=new StringBuilder();
    for (char i:array){
        t.append(i);
    }
于 2013-07-10T11:21:33.903 回答