为了账号安全,请及时绑定邮箱和手机立即绑定

如何打印带有用户占用的空格的字符串?

如何打印带有用户占用的空格的字符串?

长风秋雁 2024-01-25 15:15:45
我正在尝试连接 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是
查看完整描述

4 回答

?
料青山看我应如是

TA贡献1772条经验 获得超7个赞

您的代码使用 Java 1.8 从控制台运行得很好。

但是,在等号的左侧和右侧重复使用相同的指针可能会引入一些奇怪的行为。我专门谈论这一行:

s2=s+s2;

s2本身已经是一个指针,它指向内存中分配的对象。并且您试图在访问该指针的同时重新分配它。话虽这么说,此类问题通常在现代 Java 中处理得很好,所以我不确定您正在运行哪个版本以及在哪个 IDE(如果有)下运行。

但是,请注意,您根本不需要这样做。您可以简单地打印您想要连接的内容s2

System.out.println("Java "+s2);

不需要重新分配,也没有s1必要。


查看完整回答
反对 回复 2024-01-25
?
青春有我

TA贡献1784条经验 获得超8个赞

它将是 System.out.println(s + s2);

启动并声明一个新变量而不是重用 s2 会更明智。你可以使用 s3 = s + s2;


查看完整回答
反对 回复 2024-01-25
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

在我看来,唯一的可能性是,如果您的输入在输入字符串中有可用的结束行字符。您是键入输入还是使用复制粘贴进行输入?如果是,请尝试通过键入每个字符来手动输入。



查看完整回答
反对 回复 2024-01-25
?
HUWWW

TA贡献1874条经验 获得超12个赞

尝试了这个并执行了:

System.out.printf(s);

while(sc.hasNext()==true)

{

s2=sc.next();

System.out.printf(s2+" ");

}


查看完整回答
反对 回复 2024-01-25
  • 4 回答
  • 0 关注
  • 39 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信