[英]Java Concatenating two Strings with only charAt
我們的任務是編寫代碼,僅使用charAt連接兩個字符串。 所以我做了以下事情:
Scanner sc = new Scanner (System.in);
char operation = sc.nextLine().charAt(0)
String c = "concatenation";
if (operation == 'c' ) {
System.out.println("Please enter the first string: ");
String firstString = sc.next();
System.out.println("Please enter the scond string: ");
String secondString = sc.next();
System.out.print("The result of concatenating " + firstString + " and " + secondString + " is ");
for (int i = 0; i < firstString.length(); i++) {
char x = firstString.charAt(i);
System.out.print(x);
}
for (int i = 0; i < secondString.length(); i++) {
char y = secondString.charAt(i);
System.out.print(y);
}
}
我的老師告訴我以下內容:“因此,當前您只是在打印,但是目標是創建一個新字符串,即s1和s2的串聯……然后打印您創建的新字符串。因此使用charAt是方法可以,但是您不必一次打印一個字符,而需要一次連接一個字符。”
所以我想也許這樣的事情可能會起作用:
String concatenated;
for (int i = 0; i < firstString.length(); i++){
concatenated = firstString.charAt(i);
}
顯然不是這樣,因為類型不兼容。
因此,我想問你我能做些什么,僅使用charAt連接兩個字符串。
您正在執行分配,而不是串聯,並且無論如何都不能將char
分配給String
變量。
為了連接字符,可以使用+
運算符(或+=
):
String concatenated = "";
for (int i = 0; i < firstString.length(); i++){
concatenated += firstString.charAt(i);
}
或者,您可以使用StringBuilder
對象並將字符附加到該對象:
StringBuilder concatenated = new StringBuilder(firstString.length()+secondString.length());
for (int i = 0; i < firstString.length(); i++){
concatenated.append(firstString.charAt(i));
}
for (int i = 0; i < secondString.length(); i++){
concatenated.append(secondString.charAt(i));
}
System.out.println(concatenated.toString());
這比+
運算符更有效,因為它只生成一個StringBuilder
對象,而+
運算符每次使用時都會生成一個新的String
對象。
如果您想比使用+
或+=
效率更高(它具有二次時間復雜度,因為您在每次循環迭代中構造一個新的字符串),則可以將它們放在數組中:
char[] chars = new char[first.length() + second.length()];
for (int i = 0; i < first.length(); ++i) {
chars[i] = first.charAt(i);
}
for (int i = 0; i < second.length(); ++i) {
chars[i + first.length()] = second.charAt(i);
}
String concatenated = new String(chars);
(或者您可以使用StringBuilder
,它在內部基本相同)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.