我正在尝试连接2个字符串。我已经在代码中声明了一个字符串,并将另一个字符串作为用户输入。为了打印这些串联的字符串,我需要进行哪些更改。
以下是我尝试过的操作:
String s = "Java ";
Scanner sc = new Scanner(System.in);
System.out.println("Enter user string:");
String s2 = sc.nextLine(); //**user input taken:** is the best.
//**for concatenation**
s2=s+s2;
System.out.println(s2);
输出:
预期结果:
Java是最好的。
实际结果:
Java是
答案 0 :(得分:1)
您的代码可以使用Java 1.8从控制台正常运行。
但是,在等号的左侧和右侧重复使用相同的指针可能会引入一些奇怪的行为。我特别在谈论这一行:
s2=s+s2;
s2
已经本身就是一个指针,它指向内存中分配的对象。您正在尝试在访问它的同时重新分配该指针。话虽这么说,在现代Java中通常可以很好地解决此类问题,所以我不确定您正在运行哪个版本,以及在哪个IDE下运行。
但是,请注意,您根本不需要这样做。您可以只打印要与s2
连接的内容:
System.out.println("Java "+s2);
无需重新分配,也不需要s1
。
答案 1 :(得分:0)
应该是System.out.println(s + s2);
启动和声明一个新变量比重用s2更聪明。您可以使用s3 = s + s2;
答案 2 :(得分:0)
尝试过并执行:
System.out.printf(s);
while(sc.hasNext()== true)
{
s2=sc.next();
System.out.printf(s2+" ");
}
答案 3 :(得分:0)
在我看来,唯一的可能性是,如果您的输入中的输入字符串中包含结束行字符。您要键入输入内容还是使用复制粘贴?如果是,请尝试通过键入每个字符来手动输入输入。