向后打印字符串中的单词

时间:2014-09-23 11:55:21

标签: java string for-loop

所以我在计算机科学课上遇到了一些麻烦。我需要编写一些代码,这些代码将采用字符串并以反向字顺序向后打印。他让我找到一个空的空间,然后从那里打印然后继续搜索....并重复这个直到字符串的结尾。我输入了我的代码,所有它都打印了第一个单词3次。我知道这对你们来说似乎很明显。

public class Backwords

/* 
 * Gets words from main and prints in reverse order
 */
public static String BackwardsString(String str)
{

    String str1 = (" " + str);
    String answer = (" ");
    int lastpos = str1.length();
    for(int currpos = str.length(); currpos >= 0; currpos--) //shazam
    {
        if (str1.charAt(currpos) == ' ')
        {
            for (int p = currpos+1; p <lastpos; p++) //majicks

            answer = answer + str1.charAt(p);
            lastpos = currpos;
            System.out.println(answer);
        }

    }
    return answer;
}
public static void main(String [] args)
{
    System.out.println("Enter a string : ");
    Scanner firststr = new Scanner(System.in); //gets string input
    String str = firststr.next();
    System.out.println(BackwardsString(str));

}

}

4 个答案:

答案 0 :(得分:1)

在第二个嵌套for循环

之前将答案设置回answer = ""
for(int currpos = str.length(); currpos >= 0; currpos--) //shazam
    {
        if (str1.charAt(currpos) == ' ')
        {
            answer = "";
            for (int p = currpos+1; p <lastpos; p++) //majicks

                answer = answer + str1.charAt(p);
            lastpos = currpos;
            System.out.println(answer);
        }

    }

答案 1 :(得分:0)

您应该在这里使用StringBuilder而不是String,因为可能有很多String连接可能会在堆中创建更多对象。

使用StringBuilder,您也可以轻松完成此任务。

例如:

public static String BackwardsString(String str) {
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append(str);
    return stringBuilder.reverse().toString();
}

public static void main(String[] args) {
    System.out.println("Enter a string : ");
    Scanner firststr = new Scanner(System.in);
    String str = firststr.next();
    System.out.println(BackwardsString(str));
}

答案 2 :(得分:0)

试试这个

Scanner sc = new Scanner(System.in);
 System.out.println("Enter the string ");
 String str = sc.nextLine();
 String[] strArray = str.split(" ");
 StringBuilder reverseString = new StringBuilder("");
 for (int i = strArray.length - 1; i >= 0; i--) {
       reverseString.append(strArray[i]+" ");
 }
 System.out.println("Reverse of string is   :  "+reverseString.toString());

答案 3 :(得分:0)

您可能更容易分割字符串:

String[] words = str1.split(" ");

然后你就可以对每个单词[i]进行反转,你可以将它分解为一个字符串数组,或者像其他人所建议的那样使用字符串构建器,根据你认为适合你的类的方式来决定你