首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中的输出问题

Java中的输出问题
EN

Stack Overflow用户
提问于 2018-09-23 04:29:56
回答 4查看 129关注 0票数 1

我不知道为什么我的输出不正确。例如,如果输入是"Running is fun“,那么输出应该是"Is running fun”。然而,我得到的输出是“运行”。

代码语言:javascript
复制
  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 );

  }
}
EN

回答 4

Stack Overflow用户

发布于 2018-09-23 04:40:36

removedWord.substring(0,1).toUpperCase()此行将句子中第二个单词的第一个大写字母相加。(I)

firstWord.substring(1).toLowerCase();将第一个单词的每个字母添加到句子的末尾。(unning)

因此,这将创建Iunning的输出。您需要在String中添加removedWord的其余部分,以及一个空格和firstWord的第一个字母,作为removedWord中空格的小写字母。您可以通过使用indexOf查找空间,然后使用substring()在紧跟在空间索引后面的firstWord.toLowerCase()上添加:

代码语言:javascript
复制
removedWord = removedWord.substring(0, removedWord.indexOf(" ")) + " " + 
              firstWord.toLowerCase() + 
              removedWord.substring(removedWord.indexOf(" ") + 1, 
              removedWord.length());
String newSentence = removedWord.substring(0,1).toUpperCase() + 
                 removedWord.substring(1, removedWord.length());

输出:

代码语言:javascript
复制
Is running fun
票数 1
EN

Stack Overflow用户

发布于 2018-09-23 04:44:41

你的问题是

代码语言:javascript
复制
firstWord.substring(1).toLowerCase()

并不是像你期望的那样工作。

假设您的示例中的firstWord“Running“,那么

代码语言:javascript
复制
”Running“.substring(1)

返回“unning”

代码语言:javascript
复制
”unning“.toLowerCase()

显然返回“unning”

票数 0
EN

Stack Overflow用户

发布于 2018-09-23 04:45:09

问题出在String newSentence。您没有正确地组合firstWordremovedWord

你的案例应该是这样的:

代码语言:javascript
复制
String newSentence = removedWord.substring(0, 1).toUpperCase()  // I
                + removedWord.substring(1,2) + " "      // s
                + firstWord.toLowerCase().trim() + " "  // running
                + removedWord.substring(2).trim();      // fun

编辑(添加新的解决方案。credits @andy):

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52460630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档