我正在为我的课程编写以下编码提示: 您的任务是编写具有以下签名的方法:
public static String[] removeFromArray(String[] arr, String toRemove)
该方法应该返回一个与arr具有相同内容的字符串数组,除非没有 发生了toRemove字符串。例如,如果您的方法由以下代码调用
String[] test = {“this”, “is”, “the”, “example”, “of”, “the”, “call”};
String[] result = removeFromArray(test, “the”);
System.out.println(Arrays.toString(result));
它应该生成以下输出:
[this, is, example, of, call]
注意:您的方法将通过测试程序传递arr和toRemove的值 - 您不应该
从方法内的用户读取这些值。此外,您必须使用。编写此方法
上面要求签名以获得信用。您不需要编写调用它的代码
方法 - 只有方法本身。
提示:因为您在创建数组时必须指定数组的长度,所以您可能需要制作数字
两个循环通过输入数组:一个用来计算toRemove字符串的出现次数,所以
您可以使用适当的大小创建新数组,然后将所有其他字符串复制到新数组。
我的所有代码都在我的代码中工作,但是我必须打印出新数组的最后一部分不起作用,我知道我已经把它缩小了以便它能正确地打印出来,但是我无法得到那个部分工作。我知道我必须摆脱零,但我不知道如何。此外,我的代码必须适用于任何数组,而不仅仅是我的测试用例。一些帮助或建议真的很好。非常感谢你!!! :) 这是我的代码:
public static void main(String[] args) {
String[] test = {"this", "is", "the", "example", "of", "the", "call"};
String[] remove = removeFromArray(test, "the");
System.out.println(Arrays.toString(remove));
}
public static String[] removeFromArray(String[] arr, String toRemove) {
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i].equals(toRemove)) {
count++;
}
}
String[] result = new String[arr.length - count];
//for (int i = 0; i < arr.length; i++) {
// if(!arr[i].equals(toRemove)){
// result[].equals(arr[i]);
//}
//}
return result;
}
答案 0 :(得分:1)
你的方法看起来没问题,看起来像评论的代码你试图用错误的方法分配新的数组
您应该使用result[i] = arr[i] ;
代替result[].equals(arr[i]);
最后做:
String[] result = new String[arr.length - count];
int k = 0;
for (int i = 0; i < arr.length; i++) {
if(!toRemove.equals(arr[i])){
result[k] = arr[i];
k++;
}
}
return result;
答案 1 :(得分:0)
你的最后一部分应该是逐个为数组赋值。
int j = 0;
for (int i = 0; i < arr.length; i++) {
if(!toRemove.equals(arr[i])){
result[j++] = arr[i];
}
}
答案 2 :(得分:0)
它要求您返回一个排除给定单词的新String数组。循环遍历数组并添加不等于给定单词的单词。
public static String[] removeFromArray(String[] arr, String toRemove){
ArrayList<String> words = new ArrayList<>();
for(String s : arr)
if(!s.equals(toRemove))
words.add(s);
return words.toArray(new String[0]);
}
由于数组大小在创建后无法更改,因此请使用ArrayList存储单词,然后以数组形式返回。
答案 3 :(得分:0)
我知道你是编程本身的新手,所以给出的解决方案非常好。
但是,使用Java,您通常会使用这些库;在这种情况下,Collections库。如果你正在使用Java 8,那么你就是这样做的:
public static String[] removeFromArray(String[] arr, String toRemove) {
// create a List and fill it with your items
ArrayList<String> list = new ArrayList();
Collections.addAll(list, arr);
// remove the items that are equal to the one to be removed
list.removeIf(s -> toRemove.equals(s));
// transfer back to array
return list.toArray(new String[list.size()]);
}
然后,有Java 8 Streams,这将使这个
public static String[] removeFromArray(String[] arr, String toRemove) {
return Arrays.stream(arr) // create stream from array
.filter(s -> !toRemove.equals(s)) // filter out items
.toArray(String[]::new); // create array from stream
}