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

Public static void main (String [] args) {

//Initialize variable
String Userinput;


Scanner bot = new Scanner (System.in);
System.out.println("enter a sentence and I will repeat ever third word:");

Userinput = bot.next();
//for loop statement
for (int i=0 ; i < Userinput.length(); i++)
{

    System.out.print( Userinput.charAt(i) + "  ");
}
}

Что я могу сделать, чтобы он повторял каждое третье слово в введенном пользователем тексте

-3
Reneh Nezar 14 Сен 2020 в 18:45

2 ответа

Лучший ответ

Из моего текущего кода он записывает только первое слово, разделенное каждой буквой

Это потому, что вы использовали bot.next(), которые останавливают сканирование после первого слова в предложении. Вам нужно использовать bot.nextLine(), чтобы записать все предложение.

Чтобы повторить каждое третье слово, вы можете разделить предложение на пробел как userInput.split("\\s+"), затем перейти к полученному массиву и вывести каждое третье слово.

import java.util.Scanner;

public class Testing {
    public static void main(String[] args) {
        Scanner bot = new Scanner(System.in);
        System.out.print("Enter a sentence and I will repeat ever third word: ");

        String userInput = bot.nextLine();// Scan until enter is pressed

        // Split on whitespace
        String[] arr = userInput.split("\\s+");

        // Navigate the resulting array
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");

            // Repeat every 3rd word
            if ((i + 1) % 3 == 0) {
                System.out.print(arr[i] + " ");
            }
        }
    }
}

Пример прогона:

Enter a sentence and I will repeat ever third word: Stack Overflow is a question and answer site for professional and enthusiast programmers.
Stack Overflow is is a question and and answer site for for professional and enthusiast enthusiast programmers. 

Примечание. Я рекомендую вам следовать соглашению об именах Java. например Userinput следует называть как userInput.

0
Arvind Kumar Avinash 14 Сен 2020 в 16:28

Сначала разделите ввод для каждого пробела и поместите его в таблицу строк:

String[] parts = Userinput.split(" ");

Затем проанализируйте части таблицы и распечатайте каждый третий элемент:

for (int i=0 ; i < parts.length) i=i+2) {
    System.out.print(parts[i] + " ");
}

ПРИМЕЧАНИЕ. Индекс начинается с 0, поэтому:

  1. третий элемент таблицы - parts[2]
  2. шестой элемент таблицы - parts[5]

И продолжается ...

0
L.Papadopoulos 14 Сен 2020 в 15:59