Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅用字符连接两个字符串的Java_Java_String - Fatal编程技术网

仅用字符连接两个字符串的Java

仅用字符连接两个字符串的Java,java,string,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: "); Strin

我们的任务是编写一个代码来连接两个字符串,只使用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);
        }
    }
Scanner sc=新扫描仪(System.in);
char operation=sc.nextLine().charAt(0)
字符串c=“连接”;
如果(操作=='c'){
System.out.println(“请输入第一个字符串:”);
String firstString=sc.next();
System.out.println(“请输入scond字符串:”);
String secondString=sc.next();
System.out.print(“连接“+firstString+”和“+secondString+”的结果为”);
for(int i=0;i
我的老师告诉我:“现在你只是简单地打印,但目标是创建一个新字符串,这是s1和s2的串联…然后你打印你创建的新字符串。所以使用charAt是一种方法,但不是一次打印一个字符,你需要一次串联一个字符。”

所以我想也许像这样的方法可以奏效:

String concatenated;
    for (int i = 0; i < firstString.length(); i++){
        concatenated = firstString.charAt(i);
    }
串接;
for(int i=0;i
显然情况并非如此,因为类型不兼容


所以我想问你们,我能做些什么,只用字符连接两个字符串

您正在执行赋值,而不是串联,并且您无论如何不能将
char
赋值给
String
变量

为了连接字符,可以使用
+
运算符(或
+=
):


这比
+
操作符更有效,因为它只生成一个
StringBuilder
对象,而
+
操作符每次使用它时都会生成一个新的
字符串
对象。

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

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);
char[]chars=新字符[first.length()+second.length()];
对于(int i=0;i

(或者你可以使用一个
StringBuilder
,这在内部基本上是一样的)。

我想知道你的老师是否更喜欢你使用StringBuilder我们不允许使用任何其他字符串operations@ScaryWombat我想不会吧——如果你被允许使用它,你为什么不直接使用
+
(或者
.concat
).
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());
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);