я - студент программирования нуждался в том, чтобы сделать активность который размещая любую фразу из-за scanner, например "привет что такой", скажите мне все буквы каждого типа в принятой в доме фразе есть в общем количестве, например:
У тебя есть 1 буква h
У тебя есть 1 буква или
У тебя есть 2 буквы l
У тебя есть 2 буквы в
У тебя есть 1 буква q
У тебя есть 1 буква или
У тебя есть 1 буква и
У тебя есть 1 буква t
Я посмотрел из-за Интернета и попробовал делать мой собственный код, но не становлюсь понятным ни для чего и он не дает мне результат, который я ищу.
это мой код
import java.util.Scanner;
public class Act4 {
public static void main(String[] args){
Scanner lector = new Scanner(System.in);
System.out.println("Introduce una frase: ");
String frase = lector.nextLine();
contarCaracteres(frase);
lector.close();
}
public static void contarCaracteres(String frase) {
int contador = 0, y = 0;
char [] abecedario = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for(int x=0;x<abecedario.length;x++) {
for(y = 0;y<frase.length();y++) {
if ((frase.charAt(y)==abecedario[x])){
contador++;
System.out.println("La letra "+x+" tiene "+contador+" letras");
}
else if((frase.charAt(y)==abecedario[x] && y !=(abecedario[x]))) {
System.out.println("");
}
}
}
}
}
Проблема моего кода состоит в том, что он говорит мне, который является положением буквы прямо возвращать безо мне букву и меня повторяет буква говоря одну мне из-за одной до максимальной стоимости букв.
Introduce una frase:
hola que tal
La letra 0 tiene 1 letras
La letra 0 tiene 2 letras
La letra 4 tiene 3 letras
La letra 7 tiene 4 letras
La letra 11 tiene 5 letras
La letra 11 tiene 6 letras
La letra 14 tiene 7 letras
La letra 16 tiene 8 letras
La letra 19 tiene 9 letras
La letra 20 tiene 10 letras
Кто-то может помогать мне? спасибо заранее.
Я издаю: Я ввел азбуку [x] вместо x одинокий и уже меня достает желанная буква, но только мне остается соединять буквы в одной.
System.out.println("La letra "+abecedario[x]+" tiene "+contador+" letras");
это результат сейчас
Introduce una frase:
hola que tal
La letra a tiene 1 letras
La letra a tiene 2 letras
La letra e tiene 3 letras
La letra h tiene 4 letras
La letra l tiene 5 letras
La letra l tiene 6 letras
La letra o tiene 7 letras
La letra q tiene 8 letras
La letra t tiene 9 letras
La letra u tiene 10 letras
contador
- переменная, в которой ты сохраняешь разы, что появляется каждая буква во фразе, но определив ее вне первого for "имеется" во всем цикле. То, что ты был бы должен делать, состоит в том, чтобы определять в начале первого for :
for(int x=0;x<abecedario.length;x++) {
int contador = 0;
// ...
}
С этим изменением показывает следующее:
Introduce una frase:
arrastrar
La letra a tiene 1 letras
La letra a tiene 2 letras
La letra a tiene 3 letras
La letra r tiene 1 letras
La letra r tiene 2 letras
La letra r tiene 3 letras
La letra r tiene 4 letras
La letra s tiene 1 letras
La letra t tiene 1 letras
ВїPor quГ© не показывает единственное сообщение для каждой буквы?
println
estГЎ внутри цикла for , которые рассказывают разы, что появляется буква во фразе, тогда повторяется каждый раз, когда он находит букву. TendrГ-эксперт, который должен доставать for и помещать это despuГ©s того, чтобы считать:
for(y = 0;y<frase.length();y++) {
// ...
}
System.out.println("La letra "+abecedario[x]+" tiene "+contador+" letras");
И это дает нам:
Introduce una frase:
arrastrar
La letra a tiene 3 letras
La letra b tiene 0 letras
La letra c tiene 0 letras
La letra d tiene 0 letras
La letra e tiene 0 letras
La letra f tiene 0 letras
La letra g tiene 0 letras
La letra h tiene 0 letras
La letra i tiene 0 letras
La letra j tiene 0 letras
La letra k tiene 0 letras
La letra l tiene 0 letras
La letra m tiene 0 letras
La letra n tiene 0 letras
La letra o tiene 0 letras
La letra p tiene 0 letras
La letra q tiene 0 letras
La letra r tiene 4 letras
La letra s tiene 1 letras
La letra t tiene 1 letras
La letra u tiene 0 letras
La letra v tiene 0 letras
La letra w tiene 0 letras
La letra x tiene 0 letras
La letra y tiene 0 letras
La letra z tiene 0 letras
, Поскольку он не интересует нас буквы, что появляются ноль раз, мы должны заключать println
в if
if (contador > 0) {
System.out.println("La letra "+abecedario[x]+" tiene "+contador+" letras");
}
И он дает нам ожидаемый результат.
Introduce una frase:
arrastrar
La letra a tiene 3 letras
La letra r tiene 4 letras
La letra s tiene 1 letras
La letra t tiene 1 letras
Другая вещь, сообщение "у буквы r есть 4 буквы", он не имеет много чувства. SerГ - в лучше, что он напечатал что-то похожее в "у фразы есть 4 буквы r".
И эта часть cГіdigo не sГ©, что достигает, и я думаю, что возможно доставать:
if((frase.charAt(y)==abecedario[x] && y !=(abecedario[x]))) {
System.out.println("");
}
Твоя ошибка зиждится на том, чтобы ты использовал тот же счетчик для всех букв, тогда то, что действительно estГЎs делая состоит в том, чтобы рассказывать, что все буквы есть у фразы, прошедшей по клавиатуре.
, Продолжая твой способ это делать, ты можешь делать вектор 26 положений 0 inicializГЎndolas все. Этот вектор marcarГЎ все разы появился каждая буква в принятой в доме цепи.
Форма mГЎs правильная делания этого может быть используя таблицу Американский стандартный код обмена информацией. Ты можешь искать на ней в эту pГЎgina или ища в google. Не если estГЎs приученный для этой таблицы, но это что-то bГЎsico ее programaciГіn. char соответствует одному nГєmero целое число, например, carГЎcter a
соответствует в nГєmero 97, из-за которого, если мы отрицаем 97 у char мы darГЎ Ваш posiciГіn в векторе, который помечает нам все буквы азбуки из-за команды. (Ты можешь применять к char операции tambiГ©n).
QuedarГ - В этот cГіdigo:
import java.util.Scanner;
public class Act4 {
public static void main(String[] args){
Scanner lector = new Scanner(System.in);
System.out.println("Introduce una frase: ");
String frase = lector.nextLine();
contarCaracteres(frase);
lector.close();
}
public static void contarCaracteres(String frase) {
int y = 0;
int vecesLetra[];
vecesLetra = new int[26];
for(y = 0; y<frase.length(); y++) {
// Está en el abecedario y no es otro carácter como un espacio
if((int)frase.charAt(y) >= 97 && (int)frase.charAt(y)<=172)
vecesLetra[ (int)frase.charAt(y)-97 ]++;
}
for(y=0 ; y < vecesLetra.length; y++){
if(vecesLetra[y]>0){
System.out.println("La palabra "+(char)(y+97)+" tiene "+vecesLetra[y]+" letras");
}
}
}
}
С этим результатом:
Introduce una frase:
hola que tal
La palabra a tiene 2 letras
La palabra e tiene 1 letras
La palabra h tiene 1 letras
La palabra l tiene 2 letras
La palabra o tiene 1 letras
La palabra q tiene 1 letras
La palabra t tiene 1 letras
La palabra u tiene 1 letras