簡體   English   中英

Java僅用charAt連接兩個字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM