Member 13511450 Ответов: 1

Я хочу, чтобы подсчет слов начинался с большой буквы ! !


Как вы все поживаете? Я не могу решить эту проблему, пожалуйста, мне нужна помощь.

Я хочу от пользователя добавить текст а затем найти из текста сколько слов начинается с заглавной буквы

Я не знаю ,правильно ли решен, но я хочу, чтобы он был без массива.

Большое спасибо.

Что я уже пробовал:

public static int startWithCapital(String M) {
        //Ali From Saudi arabia
        int p = 0;
        for (int i = 0; i < M.length(); i++) {
            if (i == 0) {
                String names = M.substring(i, i + 1);
                char a = names.charAt(i);
                if (Character.isUpperCase(a)) {
                    p++;
                }
            }
            if (i >= 1) {
                String names = M.substring(M.indexOf(" "), Character.isUpperCase(d));
                char d = names.charAt(0);
                if (Character.isUpperCase(d)) {
                    if (" ".equals(names));
                    p++;
                }
            }
        }
        System.out.println("The num of words starting with a capital letter = " + p + " words\n");
        return 0;
    }

Richard MacCutchan

Найдите первую букву в строке и проверьте, является ли она прописной. Если это так, то добавьте 1 к вашему счету. Найдите первую не-букву после этой точки. Затем найдите первую букву и сравните еще раз. Повторяйте до конца строки.

1 Ответов

Рейтинг:
4

Bryian Tan

Можете ли вы использовать регулярное выражение ? Вот вам пример

Пусть палка с петлей каждый символ

public class MyClass {
    public static void main(String args[]) {
        startWithCapital("Ali From Saudi araBia YayYY");
    }
    
    public static int startWithCapital(String M) {
        //Ali From Saudi arabia
        int p = 0;
        for (int i = 0; i < M.length(); i++) {
            if (i == 0) {
                String names = M.substring(i, i + 1);
                char a = names.charAt(i);
                if (Character.isUpperCase(a)) {
                    p++;
                }
            }
            if (i >= 1) {
               
               //check if the char is upper case
               if (Character.isUpperCase(M.charAt(i))) {
                   //if yes, is the previous a space?
                   if (M.charAt(i-1) == ' ') {
                        p++;
                    }
               }
            }
        }
        System.out.println("The num of words starting with a capital letter = " + p + " words\n");
        return 0;
    }
    
}


public class MyClass {
    public static void main(String args[]) {
        String M = "Ali From Saudi araBia Yay";
        int p = 0;
        String[] parts = M.split(" ");
        for (String part : parts) {
            //do something interesting here
            System.out.println(part);
            
            if (Character.isUpperCase(part.charAt(0))) {
                p++;
            }
        }
        
        System.out.println("The num of words starting with a capital letter = " + p + " words\n");
        //return 0;
    }
}


import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MyClass {
    public static void main(String args[]) {
        Pattern p = Pattern.compile("[A-Z]\\S+");
        Matcher m = p.matcher("Ali From Saudi arabia YaY");
        int count = 0;
        while (m.find())
            count++;

        System.out.println(count);
    }
}


Выход:
The num of words starting with a capital letter = 4 words


Проверьте это: Считайте В Верхнем Регистре[^]

ссылка: Java: найти количество совпадений регулярных выражений в строке | программировании.Руководство[^]


Member 13511450

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

Bryian Tan

хорошо, никакого регулярного выражения, вы можете разбить строку на массив и затем проверить каждый из них? обратитесь к примеру.

Member 13511450

Спасибо за вашу помощь, но можете ли вы сделать это без массива? Я хочу, чтобы все было просто.

Bryian Tan

Ладно, не знаю, зачем коду нужно перебирать каждую букву. В любом случае, проверьте последнее решение.

Member 13511450

Спасибо Вам большое, это то, что я хочу.

Bryian Tan

Пожалуйста.