Java输出问题

时间:2018-09-22 20:29:56

标签: java string uppercase lowercase

我不知道为什么我的输出不正确。例如,如果输入为“跑步很有趣”,那么输出应显示为“跑步很有趣”。但是,我得到的输出是“ 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 );

  }
}

4 个答案:

答案 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。您没有正确组合firstWordremovedWord

这是针对您的情况的

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);
    }
}