这是一个简单的程序来反转字符串的每个单词并打印...我不知道这有什么问题...请帮忙
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]);
}
}
}
我将字符数组作为参数传递给反转每个单词的函数..
答案 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");