Java仅使用char

时间:2017-09-06 08:23:49

标签: java string

我们的任务是编写一个代码,仅使用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来连接两个字符串。

2 个答案:

答案 0 :(得分:3)

您正在执行分配,而不是连接,并且无论如何都无法将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对象

答案 1 :(得分:2)

如果你想比使用++=(具有二次时间复杂度,因为你在每次循环迭代中构造一个新字符串)更有效率,你可以放入一个数组:

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,内部基本相同。

相关问题