Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的char[]数组追加_Java - Fatal编程技术网

java中的char[]数组追加

java中的char[]数组追加,java,Java,我有一个字符数组,声明为char[]array=newchar[20] 关于这一点,我有以下疑问: 是每个位置的默认值“\0000” 如何将字符追加到此数组中?(例如,每次我要求用户输入字母表时,我都会在数组中按顺序存储字母表) 请接受我的询问。我可以很容易地在C++中实现这些,但是我对java是新的。提前谢谢 数组在Java中初始化为0 数组的大小也是固定的,因此如果要添加超过20个字符,则必须创建一个新的、更大的数组并将旧值复制到该数组中,或者使用一个更合适的类,如StringBuild

我有一个字符数组,声明为
char[]array=newchar[20]
关于这一点,我有以下疑问:

  • 是每个位置的默认值“\0000”

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


请接受我的询问。我可以很容易地在C++中实现这些,但是我对java是新的。提前谢谢

数组在Java中初始化为0


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

创建数组时,它的索引将填充用于数组的类型的默认值

因此,对于
int[]
,将填充值
0
,对于
char[]
\u0000
,将填充空字符。有关其他类型的默认值,请参见

如何将字符追加到此数组中

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

如果您有可变的递增数组,则此过程通常不够可行。你应该考虑使用A代替。



仅作为旁注,如果您正在从用户处读取字符串,并尝试将该字符串中的每个字符添加到字符数组中,则无需手动执行。String类提供了一个方法-,它从字符串对象中创建一个字符数组。

您需要阅读有关从输入流读取的更多信息。但是还有其他精彩的教程

不完全回答您的问题(因为它仍然是模糊的),但在下面我已经从输入和输出排序字符数组中读取了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));   
    }
publicstaticvoidmain(字符串[]args)引发IOException{
char arr[]=新字符[5];
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
System.out.println(“输入字符并按Enter:”);

for(int i=0;i)及其广泛的实用程序函数。此外,正如您提到的,您可能不知道数组中的元素数,您可能希望将其视为一个
列表,在这种情况下,您应该使用它。

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

    char[ ] array = new char[20];
    StringBuilder t=new StringBuilder();
    for (char i:array){
        t.append(i);
    }

好吧,假设我的数组中有“a”和“e”。我如何在数组中添加字母“i”?有直接方法吗?@ArjunBala你打算对数组进行排序吗?@ArjunBala假设你已将其声明为字符[20],你可以说数组[2]='i'正确!但是假设我不知道填充了多少个位置?我如何知道在哪里填充下一个字符?这行吗?:int len=0;int i=0;while(array[i]!='\u0000'){len++;i++;}array[len]=输入;您需要在某个位置跟踪插入的字符。不过,我不推荐您的解决方案,因为您可以轻松地保留一个变量,在添加字符时递增。用户输入可以是字符串?然后将字符串转换为字节数组?我不理解您的问题。这与Mc++。有,例如Syr.ArayIcess(),它相当于MeMyPy。和几个不同的对象类,类似于C++ C++中的集合类。用户输入是char INPINTINE LEN=0;int i=0;而(LeTeStSy猜[i]!= 'Un000)){LeN+++;I++};:这适合于查找插入位置吗?@ArjunBala。您不需要每次插入内容时都查找空位置。只需在
i=0处插入,然后在
猜测[i]处插入值即可
,将i增加1-
i++
,然后下次您知道您将在
guessed[1]
插入时,当您执行
guessed[i]
。你只需要检查范围。
i
不应该移动超过允许的最大索引。假设我需要找到空位置,我的代码对吗?@ArjunBala。是的。看起来不错。只是你不需要
len
变量最初为
0
。将其设置为数组的长度,然后检查
i
也在while循环中。