翻转句子的每个单词......不会出现变化

时间:2016-02-24 10:32:35

标签: java

这是一个简单的程序来反转字符串的每个单词并打印...我不知道这有什么问题...请帮忙

import java.util.Scanner;


public class ReverseWordCapitalizeFirstCharacter {


    public static void reverse(char a[], int start, int  end)
    {   
        while(start<end)
        {
        char temp = a[start];
        a[start] = a[end];
        a[end] = temp;
        start++;
        end--;
        }
    }

    public static void main(String[] args) {

        System.out.println("Enter the string");
        Scanner sc = new Scanner(System.in);
        String str = sc.next();

        char a[] = new char[str.length()];
        a = str.toCharArray();
        int wordStartIndex = 0;

        for(int i=0; i<a.length; i++)
        {
                if(a[i] == ' ')
                {  
                    reverse(a,wordStartIndex,i-1);  
                     wordStartIndex = i+1;
                }

        }

        for(int i=0; i<a.length; i++)
        {
            System.out.print(a[i]);
        }

    }

}

我将字符数组作为参数传递给反转每个单词的函数..

2 个答案:

答案 0 :(得分:1)

是不是因为sc.next()只返回下一个单词? 所以,你永远不会在你的字符串中遇到'',因此你永远不会调用反向方法。尝试使用sc.nextLine();也许。

答案 1 :(得分:1)

Javadoc说:

  

扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。

因此,如果您输入"abc 123 456",则sc.next()只会返回"abc"

String str = sc.next();//str only contains "abc"

[...]

if(a[i] == ' ') //This condition is never met.

您可以像这样指定分隔符:

Scanner sc = new Scanner(System.in);
sc.useDelimiter("\n");