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

如何在Java中向后打印多个字符串,java,string,for-loop,reverse,Java,String,For Loop,Reverse,我试图获取一个充满字符串的文件,读取它,然后打印出一些内容: 弦 字符串向后和大写 字符串长度 还有一些事情,但是我甚至还没有做到这一点,我不想让任何人完全为我编写代码。在对它进行了一段时间的处理之后,我几乎完成了它(我相信,除了几个方面) 让我感到困惑的是倒装词。我们需要使用prinf将输出整齐地放入列中,但如果我一次读取每个字符,我就无法做到这一点。所以我试着设置一个字符串backwardswark=“”并添加每个字符 这是一篇让我大吃一惊的文章: for(int i = upperCa

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

  • 字符串向后和大写
  • 字符串长度
还有一些事情,但是我甚至还没有做到这一点,我不想让任何人完全为我编写代码。在对它进行了一段时间的处理之后,我几乎完成了它(我相信,除了几个方面)

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

这是一篇让我大吃一惊的文章:

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

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

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

交咨会

默契

塔戈达

我显然想让它读出来

交咨会

上帝

焦油


任何帮助都将不胜感激。

看起来您的变量
backwardswook
总是在单词之间添加字符,而不会被重置。最简单的修复方法是通过将循环设置为空字符串来清除循环前的
backwardswill

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

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

如果您一次构建一个字符串一个字符,您将使用大量内存,因为

要更有效地执行此操作,请使用。这是为了塑造像你所做的那样的角色。完成后,可以使用
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
这还有一个额外的好处,就是每次都重置后刀


最后,由于您的目标是反向获取字符串,因此实际上我们完全可以不使用循环来完成它


这将创建一个新的
StringBuilder
,其中包含
upperCaseWord
中的字符,将字符反转,然后将最终字符串存储在
backwardswill
中。这应该可以完成此任务->

class ReverseWordsInString{
public static String reverse(String s1){
        int l = s1.length();
        if (l>1)
                return(s1.substring(l-1) + reverse(s1.substring(0,l-1)));
        else
                return(s1.substring(0));
  }
public static void main(String[] args){
        String st = "Cat Dog Rat";
        String r = "";
        for (String word : st.split(" "))
                r += " "+ reverse(word.toUpperCase());
        System.out.println("Reversed words in the given string: "+r.trim());
  }
}

你在哪里宣布这把弦剑

如果没有在字词之间清除,则分配给该字符串的内存空间仍将包含先前添加的字符

确保你是在一把落后的剑中抛掷“”;在字里行间重置它的值,这将解决您的问题


如果看不到更多的代码,我就无法准确地告诉您将其放置在何处。

文件中的字符串是如何分隔的?每行一个字符串?是否每次循环前都要初始化vaeiable BARDSHOW?您应该查看
StringBuilder.reverse()
Its将能够轻松完成所有反转。是的,结果是-SEL SELBARÉSIM
class ReverseWordsInString{
public static String reverse(String s1){
        int l = s1.length();
        if (l>1)
                return(s1.substring(l-1) + reverse(s1.substring(0,l-1)));
        else
                return(s1.substring(0));
  }
public static void main(String[] args){
        String st = "Cat Dog Rat";
        String r = "";
        for (String word : st.split(" "))
                r += " "+ reverse(word.toUpperCase());
        System.out.println("Reversed words in the given string: "+r.trim());
  }
}