Проверка, начинается ли ввод с числа и заканчивается ли он верхней буквой - PullRequest
1 голос
/ 08 мая 2020

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

if (sentence.startsWith("[0-9]") && sentence.contains("end") && (sentence.endsWith("[A-Z]"))) {
    y++;
}
System.out.println(y);

Ответы [ 3 ]

1 голос
/ 08 мая 2020

Попробуйте это. Из-за их накладных расходов я стараюсь избегать использования regular expressions, если это действительно не упрощает задачу. В этом случае есть методы, облегчающие процесс.

Кроме того, на результат влияет пробел в начале и конце предложения (т.е. не обрезается).


int lastIdx = sentence.length()-1;
if (Character.isDigit(sentence.charAt(0))
        && sentence.contains("end")  
        && Character.isUpperCase(sentence.charAt(lastIdx))) {
           y++;
}

0 голосов
/ 08 мая 2020

Ваш код не работал, потому что String :: startWith не принимает регулярное выражение в качестве параметра, пока вы используете регулярное выражение. Вам необходимо использовать String :: match , как показано ниже:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int no = 0;
        while (no < 4) {
            System.out.print("Type a number >4: ");
            no = Integer.parseInt(scan.nextLine());
        }
        String sentence;
        int y = 0;
        for (int i = 0; i < no; i++) {
            System.out.print("Enter a sentence: ");
            sentence = scan.nextLine();
            if (sentence.matches("[0-9]+.*end.*[\\p{javaUpperCase}]")) {
                y++;
            }
        }
        System.out.println(y);
    }
}

Пробный запуск:

Type a number >4: 5
Enter a sentence: Hello world
Enter a sentence: 123 Hello World ends with LD
Enter a sentence: 123HelloendHH
Enter a sentence: Good morning
Enter a sentence: 123Good morning
2
0 голосов
/ 08 мая 2020

См. Это REGEX (^[0-9]+)(end)([A-Z]+$) начинается с одной или нескольких цифр и заканчивается одним или несколькими верхними символами

    if (sentence.matches("(^[0-9]+)(end)([A-Z]+$)")) {
        y++;
    }
    System.out.println(y);
...