Проверьте количество символов из командной строки - PullRequest
0 голосов
/ 01 февраля 2019

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

Тест - ProgrammingIsFun, поэтому счет будет равен трем..

Вот что у меня есть

public static void main(String[] args) {


    int count = 0;


    for(int i = 0; i < args.length;i++) {
        for(int j = 0; j >= i; j++)
        if(Character.isUpperCase(args[i].charAt(j)))
            count++;
    }
    System.out.print("The number of upper cases are: " + count);
}

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

Я все еще учусь, и сейчас я не могу использовать объекты или что-то подобное.Любая помощь будет оценена.или если бы вы могли указать мне куда-нибудь, я бы мог прочитать.Я попробовал документы, но это было много, и я довольно быстро ошеломился.

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

У вас есть ошибка во внутреннем цикле:

for(int j = 0; j >= i; j++)

Обратите внимание, что внешний цикл запускается для каждого аргумента командной строки, а внутренний цикл запускается для каждого символааргумента, данного i.

Так что измените его на

for(int j = 0; j < args[i].length(); j++)

0 голосов
/ 01 февраля 2019

Чтобы сделать ваш код более легким для чтения (и записи), вы должны использовать циклы foreach, по одному для каждой строки в массиве args, и по одному для каждого символа в массиве, который мы получаем, выполняя foo.toCharArray().Синтаксис цикла foreach выглядит следующим образом:

for (type var : iterable) {
    // Code here
}

Где iterable - это что-то с интерфейсом Iterable (обычно это массив или ArrayList).

Мы можем переключитьсяэто в вашем коде и сделать его намного проще для чтения:

String[] args = {"ProgrammingIsFun!", "When It Works..."};

int count = 0;
for (String e : args) {
    for (char f : e.toCharArray()) {
        if (Character.isUpperCase(f)) {
            count++;
        }
    }
}
System.out.print("The number of upper cases are: " + count);
0 голосов
/ 01 февраля 2019

for(int j = 0; j < args[i].length(); j++)?

Суммирует все прописные буквы для всех строк, переданных в качестве аргументов.Ваш код может быть проще, если вы ожидаете только одну строку.

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