我正在尝试复制字符串的一些基本操作,而代码工作它只是不使用StringBuilder
函数打印输出
public static String concatenation(String a, String b) {
StringBuilder str = new StringBuilder();
for (int i = 0; i < a.length(); i++) {
//System.out.println(a.charAt(i));
str.append(a.charAt(i));
}
for (int j = 0; j < b.length(); j++) {
//System.out.println(b.charAt(j));
str.append(b.charAt(j));
}
String concat = str.toString();
return concat;
}
public static String subString(String a, int i, int j) {
StringBuilder str = new StringBuilder();
for (int k = i; k <= j; k++) {
//System.out.println(a.charAt(k));
str.append(a.charAt(k));
}
String sub = str.toString();
return sub;
}
在这两种情况下,System.out.println()
都可以工作并输出正确的输出,但是它逐行排列,我需要在一个字符串中,这就是为什么我使用StringBuilder
但由于某种原因它不起作用的原因
在主要方法中我有:
a = scan.nextLine();
b = scan.nextLine();
String concat = concatenation(a, b);
答案 0 :(得分:0)
像这样更改您的concatenation(String a, String b)
。我认为这是一个更好的实现方法。
public static String concatenation(String a, String b) {
StringBuilder str1 = new StringBuilder(a);
StringBuilder str2 new StringBuilder(b);
str1.append(str2);
return str1.toString();
}
您可以将其用于subString(String a, int i, int j)
public static String subString(String a, int indexFirst, int indexLast) {
StringBuilder str = new StringBuilder();
char[] arr = a.toCharArray();
if(arr.length < indexFirst || arr.length > indexLast)
throw new Exception ("Invalid Index Out of Bound Found Exception");
for (int k = i; k <= j; k++)
str.append(arr[k]); // this looks better than manipulating any String because of Immutability Property.
return str.toString();
}
答案 1 :(得分:0)
我只是想了解为什么StringBuilder不起作用
据我所知,StringBuilder
或concatenation
方法都没有错。
a = scan.nextLine();
b = scan.nextLine();
String concat = concatenation(a, b);
我认为问题在于您只是将concatenation
方法调用的结果分配给变量而不是将其打印出来。在这3行中的最后一行之后添加:
System.out.println(concat);
在这两种情况下,System.out.println()都可以正常工作并输出正确的输出,但它一行一行,我需要一个字符串
那是因为您使用的是println
。 println
方法超出其参数,后跟行终止。如果您不想终止线路,请改用print
。
但是,concatenation
方法不应该打印任何内容,如果它应该是String.concat
的类似物。您应该在concatenation
方法返回之后打印连接字符串。