Как я могу получить в своем выводе нужные мне пробелы? - PullRequest
1 голос
/ 15 мая 2019

Я должен использовать первую букву в каждом слове, переданном в строку.Мой вывод использует эту заглавную букву, но не поддерживает формат исходного вывода.Например, строковый ввод - «hello world», мой вывод - «HelloWorld», а желаемый вывод должен быть «Hello World».

Я пытался добавить пробелы, где я могу, по всему коду, но ничегоработает.Я думаю, что проблема в том, что когда я использую toCharArray, он дает мне вывод без пробелов?Таким образом, мой результат конкатенации - это сложение всего одним махом, в отличие от каждого слова в отдельности?

Или я подумал, что мой код использует конкатенацию строк с моим результатом, и он не разделяется, потому что оба слова входят в одно и то жепеременная.

import java.util.*; 
import java.io.*;

    class Main {  
      public static String LetterCapitalize(String str) { 

        // code goes here   
        String[] word = str.split(" ");
        String result = "";


        for(int i = 0; i < word.length; i++) {

            char[] charWord = word[i].toCharArray();

            for(int j = 0; j < charWord.length; j++ ) {
            String cap = word[i].charAt(0) + "";
            cap = cap.toUpperCase();
            //System.out.print(" ");
            result += (j == 0 ? cap : word[i].charAt(j));
        }

        }

        return result;


      } 

      public static void main (String[] args) {  
        // keep this function call here     
        Scanner s = new Scanner(System.in);
        System.out.print(LetterCapitalize(s.nextLine())); 
      }   

   }

Нет ошибок.Просто не получаю желаемый результат.

Ответы [ 3 ]

1 голос
/ 15 мая 2019

Когда вы сделали String[] word = str.split(" ");, пробел между каждым словом убирается, и теперь у вас остаются только слова в массиве.Вы должны использовать String.join(" ", word) в массиве результирующих слов, чтобы обратить вспять эффекты, чтобы получить обратно пробелы.

Вместо того, чтобы просматривать каждое слово char по символу, попробуйте следующее:

for(int i = 0; i < word.length; i++) {
    word[i] = word[i].substring(0, 1).toUpperCase() + word[i].substring(1);
}
result = String.join(" ", word);
0 голосов
/ 15 мая 2019

Вы можете использовать приведенный ниже код.

class Main {
public static String LetterCapitalize(String str) {

    // code goes here
    String[] word = str.split(" ");
    StringBuilder result = new StringBuilder();


    for (int i = 0; i < word.length; i++) {

        char[] charWord = word[i].toCharArray();

        for (int j = 0; j < charWord.length; j++) {
            String cap = word[i].charAt(0) + "";
            cap = cap.toUpperCase();
            //System.out.print(" ");
            result.append(j == 0 ? cap : word[i].charAt(j));
        }
        result.append(" ");
    }

    return result.toString();


}

public static void main(String[] args) {
    // keep this function call here
    Scanner s = new Scanner(System.in);
    System.out.print(LetterCapitalize(s.nextLine()));
}

}

0 голосов
/ 15 мая 2019

Попробуйте это:

import java.util.*;

class Main {  
  public static String LetterCapitalize(String str) { 

    // code goes here   
    String[] word = str.split(" ");
    String result = "";

    for(int i = 0; i < word.length; i++) {
        result += capitalize(word[i]) + (i != word.length - 1 ? " " : "");
    }

    return result;
  }

  private static String capitalize(String s){
      return Character.toUpperCase(s.charAt(0)) + s.substring(1);
  }

  public static void main (String[] args) {  
    // keep this function call here     
    Scanner s = new Scanner(System.in);
    System.out.print(LetterCapitalize(s.nextLine())); 
  }   
}
...