如何删除数组中的指定字符并将第一个数组的元素复制到第二个数组?
我尝试将数组转换为列表,以便能够检查数组是否包含此指定字符,然后我尝试删除此字符并通过复制第一个数组的元素但不包含指定字符来创建另一个数组。
系统显示此错误:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:161)
at java.util.AbstractList$Itr.remove(AbstractList.java:375)
at java.util.AbstractCollection.remove(AbstractCollection.java:269)
at test4.test4.main(Question4.java:21)
这是我的代码:
package test4;
import java.util.Arrays;
public class test4 {
public static void main(String[] args) {
String[] a = new String[]{ "A", "b", "C", "$", "$", "$", "d", "s", "w", "t", "Z",
"r", "I", "o", "A", "b", "C", "$", "$", "$", "d", "s", "w", "t" };
String[] b = new String[a.length];
int num = 0;
for(int i =0; i<a.length; i++){
if(Character.isUpperCase(i)){
num++;
}
if(Arrays.asList(a).contains("$")){
Arrays.asList(a).remove("$");
b[i] =a[i];
}
}
System.out.println("number os uperCase is: " + num);
System.out.println();
System.out.println("this is the new Array: " + Arrays.toString(b));
}
}
谁能帮我解决这个问题吗?
最佳答案
Arrays.asList(a)
返回固定长度的列表,因此 Arrays.asList(a).remove("$");
无法工作。
您可以改为迭代数组:
int count = 0;
for(int i =0; i<a.length; i++){
if(Character.isUpperCase(a[i].charAt(0))){
num++;
}
if(!a[i].equals("$")){ // copy only non "$" Strings to the output array
b[count] =a[i];
count++;
}
}
请注意,您的大写字符计数也是错误的,因为您在数组的索引上调用 Character.isUpperCase
而不是其中包含的字符。
您应该考虑的另一件事是将 String[] a
更改为 char[] a
,因为看起来该数组中只有单个字符串。
关于java - 如何删除数组中的指定字符并将元素复制到另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27599605/