如何在Java中向后打印多个字符串

2023-12-06

我正在尝试获取一个充满字符串的文件,读取它,然后打印出一些内容:

  • 字符串
  • 字符串向后 AND 大写
  • 字符串长度

还有一些事情,但是我还没有达到这一点,并且不想要求任何人完全为我编写代码。经过一段时间的摸索之后,我几乎完成了它(我相信,除了一些区域之外)。

让我困惑的是倒着的词。我们需要使用 prinf 将输出整齐地放入列中,但如果我一次读取每个字符,我就无法做到这一点。所以我尝试设置一个String backwardsWord = "";并添加每个字符。

这就是让我绊倒的部分:

for(int i = upperCaseWord.length() - 1; i >= 0; i--)
{
    backwardsWord += (upperCaseWord.charAt(i) + "");
}   

    

我的问题是,当我打印它时,第一个单词可以正常工作。但是,此后的每个单词都会添加到前一个单词中。

例如:如果我向后打印猫、狗和老鼠,它会显示

TAC

TACGOD

塔克戈达

我显然想要它读

TAC

GOD

TAR

任何帮助,将不胜感激。


它看起来像你的变量backwardsWord总是附加一个字符而不在单词之间重置。最简单的修复方法是清除backwardsWord在循环之前将其设置为空字符串。

backwardsWord = ""; //Clear any existing characters from backwardsWord

for(int i = upperCaseWord.length() - 1; i >= 0; i--)
{
    backwardsWord += (upperCaseWord.charAt(i) + "");
}


如果您一次构建一个字符串,您将使用大量内存,因为Java 字符串是不可变的.

为了更有效地做到这一点,请使用字符串生成器反而。这是为了塑造像你正在做的事情那样的角色。完成后,您可以使用toString方法来获取字符串。

StringBuilder builder = new StringBuilder(); //Creates the String builder for storing the characters
for(int i = upperCaseWord.length() - 1; i >= 0; i--)
{
    builder.append(upperCaseWord.charAt(i)); //Append the characters one at a time 
}
backwardsWord = builder.toString(); //Store the finished string in your existing variable

这样做的另一个好处是每次都会重置backwardsWord。


最后,由于您的目标是反转字符串,因此我们实际上可以完全不使用循环来完成它如这个答案所示

backwardsWord = new StringBuilder(upperCaseWord).reverse().toString()

这创建了一个新的StringBuilder与来自的字符upperCaseWord,反转字符然后将最终字符串存储在backwardsWord

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Java中向后打印多个字符串 的相关文章

随机推荐