我正在尝试创建一个数组并删除除空格(“”)之外的重复项。我在网上看到了一些方法,但我正在尝试不复制。我尝试了很多方法,但我就是不明白为什么我的方法不起作用。
这是我尝试过的:
在第一个方法中,方法是接收输入,调用函数,创建数组列表,遍历字符串,同时将每个字符添加到数组列表中,第二次遍历列表以将每个字符与第一个索引处的字符进行比较,检查它们是否相等,然后将它们从数组列表中删除
问题似乎是“检查它们是否相等,然后将它们从数组列表中删除”:
if(character.get(i).equals(character.get(k))) {
character.remove(arr.charAt(i));
}
第二个
for(int k = 0;k < characters.length;k++) {
if(characters[i]==characters[k]) {
System.out.print(character);
character.remove(characters[i]);
}
import java.util.*;
public class NoRepeats {
public static void main(String args[]) {
System.out.print("Please enter a phrase: ");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
char[] characters = chars(input);
}
public static char[] chars(String arr) {
ArrayList<Character> character = new ArrayList<Character>();
for(int i = 0; i<arr.length();i++) {
character.add(arr.charAt(i));
for(int k = 1; k<arr.length();k++) {
if(character.get(i).equals(character.get(k))) {
character.remove(arr.charAt(i));
}
}
}
System.out.print(character);
return null;
}
}
import java.util.*;
public class NoRepeats {
public static void main(String args[]) {
System.out.print("Please enter a phrase: ");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
//receive input
char[] characters = chars(input);
//call function
}
public static char[] chars(String arr) {
ArrayList<Character> character = new ArrayList<Character>();
//create an empty arraylist
char[] characters = arr.toCharArray();
for(int j = 0; j<characters.length;j++) {
character.add(characters[j]);
}
for(int i = 0; i<characters.length;i++) {
/*traverse through the orignal array adding a character to
the empty array list each time*/
for(int k = 0;k < characters.length;k++) {
if(characters[i]==characters[k]) {
System.out.print(character);
character.remove(characters[i]);
}
}
}
return null;
}
}
预期输入:
“And I think to myself: what a wonderful world!”
预期输出:
And I thk o myself: w ru !
第一个产生此错误:
线程“main”中的异常 java.lang.IndexOutOfBoundsException:索引 1 超出长度 1 的范围 在 java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) 在 java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) 在 java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266) 在 java.base/java.util.Objects.checkIndex(Objects.java:359) 在 java.base/java.util.ArrayList.get(ArrayList.java:427) 在 NoRepeats.chars(NoRepeats.java:20) 在NoRepeats.main(NoRepeats.java:10)
第二个产生此错误:
“线程“main”中的异常 java.lang.IndexOutOfBoundsException:索引 118 超出长度 2 的范围 在 java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) 在 java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) 在 java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266) 在 java.base/java.util.Objects.checkIndex(Objects.java:359) 在 java.base/java.util.ArrayList.remove(ArrayList.java:504) 在 NoRepeats.chars(NoRepeats.java:33) 在 NoRepeats.main(NoRepeats.java:11) ”
首先需要用文字(或伪代码)来表达你的算法。像这样的东西: 问题:从字符串中删除除空格之外的重复字符。 解决方案(伪代码):
output_string = ""
used_chars = ""
for (c : input_string) {
if (c == ' ') output_string += c;
else if (!used_chars.contains(c)) {
output_string += c;
used_chars += c;
}
}
print(output_string)
现在您可以用任何您想要的语言来实现。