我不知道为什么我的输出不正确。例如,如果输入为“跑步很有趣”,那么输出应显示为“跑步很有趣”。但是,我得到的输出是“ Iunning”。
import java.util.Scanner;
public class Problem1 {
public static void main( String [] args ) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter text: ");
String sentence = sc.nextLine();
int space = sentence.indexOf(" ");
String firstWord = sentence.substring(0, space + 1);
String removedWord = sentence.replaceFirst(firstWord, "");
String newSentence = removedWord.substring(0,1).toUpperCase() +
firstWord.substring(1).toLowerCase();
System.out.println("");
System.out.println( newSentence );
}
}
答案 0 :(得分:1)
removedWord.substring(0,1).toUpperCase()
此行在句子中添加第二个单词的大写第一个字母。 (I
)
firstWord.substring(1).toLowerCase();
将第一个单词的每个字母添加到句子的末尾。 (unning
)
因此,这将创建Iunning
的输出。您需要将removedWord
的其余部分以及一个空格和String
的第一个字母添加为{{1}中的空格的小写字母}。您可以使用indexOf
查找空格,然后使用substring()
在空格的索引之后添加firstWord
来完成更多操作:
removedWord
输出:
firstWord.toLowerCase()
答案 1 :(得分:0)
您的问题是
firstWord.substring(1).toLowerCase()
无法正常工作。
假设您的示例中的firstWord
是“Running“
,那么
”Running“.substring(1)
返回“正在运行”
”unning“.toLowerCase()
显然返回“正在运行”
答案 2 :(得分:0)
问题出在String newSentence
。您没有正确组合firstWord
和removedWord
。
这是针对您的情况的
String newSentence = removedWord.substring(0, 1).toUpperCase() // I
+ removedWord.substring(1,2) + " " // s
+ firstWord.toLowerCase().trim() + " " // running
+ removedWord.substring(2).trim(); // fun
编辑(添加新解决方案。积分@andy):
String[] words = sentence.split(" ");
words[1] = words[1].substring(0, 1).toUpperCase() + words[1].substring(1);
String newSentence = words[1] + " "
+ words[0].toLowerCase() + " "
+ words[2].toLowerCase();
答案 3 :(得分:0)
这正常工作:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter text: ");
String sentence = sc.nextLine();
int space1 = sentence.indexOf(' ');
int space2 = sentence.indexOf(' ', space1 + 1);
if (space1 != -1 && space2 != -1) {
String firstWord = sentence.substring(0, space1 + 1);
String secondWord = sentence.substring(space1 + 1, space2 + 1);
StringBuilder newSentence = new StringBuilder(sentence);
newSentence.replace(0, secondWord.length(), secondWord);
newSentence.replace(secondWord.length(), secondWord.length()+ firstWord.length(), firstWord);
newSentence.setCharAt(0, Character.toUpperCase(newSentence.charAt(0)));
newSentence.setCharAt(secondWord.length(), Character.toLowerCase(newSentence.charAt(secondWord.length())));
System.out.println(newSentence);
}
}