Как я могу ввести ровно пять символов строки в одной строке, а затем поставить строку с пробелами между каждым символом? Джава - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу, чтобы пользователь ввел пять букв в одной строке (например, слово "привет") и вывел его в виде "h e l l o". Я могу сделать это с String.replace (как показано ниже) , но мне нужно использовать printf и %s, чтобы сделать это .

Scanner scanner = new Scanner(System.in);
System.out.println("Enter five chatracters: ");
String charoutput = scanner.next();
String charoutput2 = charoutput.replace("", "       ");

System.out.println("You have entered: " +charoutput2);

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Есть несколько способов решить эту проблему:

Использование String.join:

String input = "Hello";
String result = String.join(" ", input.split(""));
// result now holds "H e l l o"

Использование регулярного выражения с replaceAll:

String input = "Hello";
String result = input.replaceAll(".","$0 ").trim();
// result now holds "H e l l o"

Использование цикла:

String input = "Hello";
int length = input.length;
for(int i=0; i<length; i++)
  System.out.printf("%c%s", input.charAt(i), i<length ? " " : "");
// outputs "H e l l o"

Использование printf:

String input = "Hello";
for(char c : input.toCharArray())
  System.out.printf("%2c", c);
// outputs " H e l l o" (NOTE the leading space!)

Попробуйте онлайн.

Я бы предпочел String.join, так как это, по сути, встроенный элемент того, что вы хотите сделать.

0 голосов
/ 14 сентября 2018

Вот один из способов сделать это:

Scanner scanner = new Scanner(System.in);
System.out.println("Enter five chatracters: ");
String charOutput = scanner.next();

String separatedChars = "";
for(char c: charOutput.toCharArray()) {
    separatedChars += c + " ";
} 

System.out.printf("You have entered: %s", separatedChars);

Здесь вы перебираете каждый символ полученной строки и добавляете его в переменную separatedChars, за которым следует пробел. Затем результат печатается с использованием printf .

0 голосов
/ 14 сентября 2018

Вы можете использовать printf для печати пробела для каждого символа в строке

String str = "hello";
    char[] ch =str.toCharArray();
    for (char c:ch) {
        System.out.printf("%2s", c);  // h e l l o
    }

или вы можете использовать потоки Java 8 для этого в строке

Arrays.stream(str.split("")).forEach(i->System.out.printf("%2s",i)); //h e l l o
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...