#java
#java
Вопрос:
Пример вывода:
Введите строку: hello
Количество каждой гласной в строке:
a: 0
e: 1
i: 0
o: 1
u: 0
other characters: 3
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
int count = 0;
System.out.println("Enter a string: ");
Scanner myObject = new Scanner(System.in);
String anyWord = myObject.nextLine();
for (int i = 0; i < anyWord.length(); i ) {
char vowelA = anyWord.charAt(i);
if (vowelA == 'a' || vowelA == 'A') {
count ;
}
}
System.out.println("a: " count);
}
}
Это код, который я пишу, но я не знаю, что делать дальше…
Нужна ваша помощь…
Комментарии:
1. Вам понадобятся разные переменные count для каждой гласной. Возможно, что-то вроде
countA
,countE
, и т.д.countI
Затем вы можете просто добавить больше операторов if внутри вашего цикла, чтобы увеличить эти показатели. Также обратите внимание, что в вашем кодеvowelA
иvowelB
являются одинаковыми, поэтому нет причин сохранять обе переменные. Я бы просто использовал одну переменную и назвал ее примерно такcharacter
.2. Знаете ли вы о картах? У вас может быть карта с ключами, которые являются символами, и значениями, которые являются целыми числами. Каждый ключ будет гласной, а каждое значение будет подсчитывать, сколько раз вы видели эту гласную. Вы также можете использовать список, как это делает ответ @DerekW. Или идите по тому пути, по которому вы идете, и просто учитывайте отдельные значения… a_count , e_count и т.д. (Извините за более раннюю формулировку… Я думал о Python)
3. После этого первого
if
блока используйте серию операторов if …else , чтобы определить, был ли символ одним из других гласных. Создайте отдельныеcount
переменные, по одной для каждой гласной. Последнийelse
блок предназначен для подсчета всех символов, которые не являются гласными.
Ответ №1:
Я собираюсь добавить свое решение здесь, хотя у других людей есть рабочие. На мой взгляд, создание набора переменных для каждого уникального элемента, который вы ищете, является плохой практикой. Что, если вы также хотите теперь принять y
в качестве гласной?
Вот мое решение, которое использует массив символов для определения того, какие символы следует учитывать. Затем мы создаем Hashmap, где ключ — это символ, а значение — количество каждого появления символа в строке. Затем мы выполняем итерацию по строке, увеличивая значение count в хеш-таблице, если ключ уже существует в хеш-таблице. Помните, мы подготовили хэш-таблицу ранее, сделав это. Наконец, мы распечатываем все ключи и связанные с ними значения.
import java.util.*;
public class Main {
public static void main(String []args){
// List of vowels.
char vowel_characters[] = {'a', 'e', 'i', 'o', 'u'};
// Add vowels to dictionary, assign value to zero.
Hashtable vowels = new Hashtable();
for (char vowel : vowel_characters) {
vowels.put(vowel, 0);
}
// The input string.
String input = "Hello, world!";
// Check if the character at index `i` is in the dictionary, if so then
// add 1 to its counter.
for (int i = 0; i < input.length(); i ) {
char vowel = input.charAt(i);
if (vowels.containsKey(vowel)) {
vowels.put(vowel, (int)vowels.get(vowel) 1);
}
}
// Print the results/
for (Object vowel : vowels.keySet()) {
System.out.println((char)vowel ": " vowels.get(vowel));
}
}
}
Комментарии:
1. Ваше решение — это не то, о чем просили. OP хотел получить помощь в ЕГО / ЕЕ реализации. Вы не помогаете OP научиться программировать, предоставляя ему / ей полное решение, особенно если это даже не является продолжением начальной работы OPs.
2. На решение конкретного вопроса OPs уже был дан ответ. Другое решение, использующее его точную реализацию, бессмысленно. Вы дали ему указания о том, как действовать дальше, Дерек дал рабочую реализацию с использованием своего алгоритма, а я дал реализацию с использованием другого алгоритма. Хотя OP может продолжить свою реализацию, он также может увидеть, как его алгоритм может быть преобразован в другой. Теперь у него есть два решения, использующие два разных метода, и он может учиться у обоих. Если OP знает / не знал о хэш-таблицах, теперь у него есть сравнение, которое важно для него самого.
3. Сейчас оба варианта контрпродуктивны. Позже вернитесь и предоставьте свои полные решения. Прямо сейчас лучше всего помочь OP прийти к решению, не просто копируя / вставляя все это, как из чьего-то ответа. — Я знаю, что это несколько противоречиво, но моя цель — помочь OP как можно лучше …. не для того, чтобы выиграть очки. — Большинство Java-программ, которые часто используют это пространство, уже знают, как это сделать во сне. Этот вопрос, вероятно, задавался 100 раз.
4. Я полностью категорически не согласен. У OP есть инструменты и знания, чтобы завершить свой код, посмотрев на то, что сделал Дерек, а затем добавив это сам. Если OP решит скопировать и вставить решение Дерека, это его решение. Не вам решать, как OP учится лучше всего. В идеале OP должен быть представлен решениям с использованием разных алгоритмов, а затем исследовать различные объекты и методы, которые они используют, а затем попытаться реализовать это самостоятельно, но опять же, это для OP, чтобы решить, как он это делает.
5. Требует ли вопрос полного решения? Нет. Итак, ваш ответ не является ответом на ЭТОТ вопрос. Точка.