我应该在我的主要方法中从扫描仪中获取 4 个字符串(s1、s2、s3 和 s4——主要方法在测试后完美运行)并调用:
--> concat(s1, s2, s3, s4);
方法名称 concat
可能会产生误导,因为我不仅仅想要 s1+s2+s3+s4
。我真正需要的是从 s1
开始,然后添加 s2
、s3
和 s4
中的字符尚未出现在结果 String
中。例如,如果s1
是“drain”,s2
是“dane”,则处理s2
后的部分结果将是“drain”,因为d
、a
和 n
已存在于结果 String
中。
方法如下:
public static void concat(String s1, String s2, String s3, String s4) {
String str;
StringBuilder createdWord = new StringBuilder();
for (int i = 0; i < s1.length(); i++) {
char c = s1.charAt(i);
for (int j = 0; j < createdWord.length(); j++) {
if (createdWord.charAt(j) != c)
createdWord.append(c);
}
}
for (int i = 0; i < s2.length(); i++) {
char c = s2.charAt(i);
for (int j = 0; j < createdWord.length(); j++) {
if (createdWord.charAt(j) != c)
createdWord.append(c);
}
}
for (int i = 0; i < s3.length(); i++) {
char c = s3.charAt(i);
for (int j = 0; j < createdWord.length(); j++) {
if (createdWord.charAt(j) != c)
createdWord.append(c);
}
}
for (int i = 0; i < s4.length(); i++) {
char c = s4.charAt(i);
for (int j = 0; j < createdWord.length(); j++) {
if (createdWord.charAt(j) != c)
createdWord.append(c);
}
}
str = createdWord.toString();
System.out.println(str);
}
当我尝试打印 (str) 时,我得到空白输出。我确信有一种方法可以让这件事变得更简单。
我会接受基于清晰、简单和/或更简单的解决方案的答案。提前致谢!
最佳答案
问题出在有 for 循环的行中:
for (int j = 0; j < createdWord.length(); j++)
由于createdWord刚刚初始化,它的长度为零(0),因此createdWord.length() = 0并且永远不会到达for循环内的代码。 您应该尝试解决这个问题。
编辑 这就是我如何简单地重构 concat 方法。我还提供了一个主弦和 4 个弦来进行测试。根据OP评论,预期的系统输出将是“drainemv”
public static void main(String[] args) {
String str1 = "drain";
String str2 = "dane";
String str3 = "main";
String str4 = "vain";
concat(str1, str2, str3, str4);
}
public static void concat(String s1, String s2, String s3, String s4) {
String str;
StringBuilder createdWord = new StringBuilder();
for (int i = 0; i < s1.length(); i++) {
char c = s1.charAt(i);
if(createdWord.length() ==0) {
createdWord.append(c);
} else if (!createdWord.toString().contains(String.valueOf(c))){
createdWord.append(c);
}
}
for (int i = 0; i < s2.length(); i++) {
char c = s2.charAt(i);
if(createdWord.length() ==0) {
createdWord.append(c);
} else if (!createdWord.toString().contains(String.valueOf(c))){
createdWord.append(c);
}
}
for (int i = 0; i < s3.length(); i++) {
char c = s3.charAt(i);
if(createdWord.length() ==0) {
createdWord.append(c);
} else if (!createdWord.toString().contains(String.valueOf(c))){
createdWord.append(c);
}
}
for (int i = 0; i < s4.length(); i++) {
char c = s4.charAt(i);
if(createdWord.length() ==0) {
createdWord.append(c);
} else if (!createdWord.toString().contains(String.valueOf(c))){
createdWord.append(c);
}
}
str = createdWord.toString();
System.out.println(str);
}
关于java - 我在这个方法中做错了什么? (使用 StringBuilder 从 4 个字符串创建一个新单词),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34909837/