Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: xeta21 en 03 de Noviembre 2015, 12:51
-
Hola de nuevo.. T_T
Tengo este código:
package lletresdeparaulesaldiposit;
public class LletresdeParaulesAlDiposit {
public static void main(String[] args) {
LletresdeParaulesAlDiposit prg = new LletresdeParaulesAlDiposit ();
prg.proves();
}
private boolean lletresDeParaulesAlDiposit(String[] paraules, char[] diposit) {
boolean result = false;
for (int i = 0; i < paraules.length; i++){
char[] caracteres = paraules[i].toCharArray();
for(int j = 0; j < caracteres.length; j++){
for(int k = 0; k < diposit.length; k++){
if ( caracteres[j] == diposit[k] ){
System.out.println("SI: " + caracteres[j] + " - " + diposit[k]);
result = true;
} else {
System.out.println("NO: " + caracteres[j]+ " - " + diposit[k]);
result = false;
}
}
}
System.out.println("-----");
System.out.println();
}
return result;
}
private void proves() {
char[] diposit = {'a', 'c', 'i','a','v','a','d','s', 'o','t','i'};
String[] paraules = {"cas", "dit"};
System.out.println("Son lletresAldiposit (si): ");
System.out.println(lletresDeParaulesAlDiposit(paraules, diposit ));
}
}
Y no me hace la función que esperaba..
Os explico necesito que me verifique si la palabra cas y dit están en el deposito : char[] diposit = {'a', 'c', 'i','a','v','a','d','s', 'o','t','i'};
si las palabras están en el deposito me de true sino false.
es decir:
Tengo los caracteres:
char[] diposit = {'a', 'c', 'i','a','v','a','d','s', 'o','t','i'};
Si escribo Hola que tal ( DARA FALSE ya que no está la H, L, Q,U,E, L )
Si escribo cava ( dara true ya que están los caracteres )
El problema es que si escribo por ejemplo cavav tendría que dar error ya que solo hay una V en el deposito no 2.
Por eso no sé como hacerlo.. Podéis ayudarme? :(
-
Sigo sin saber como hacerlo.. :(
-
Hola xeta21.
Retoqué un poco tu código, no se si será lo que buscas.
public class LletresdeParaulesAlDiposit {
public static void main(String[] args) {
LletresdeParaulesAlDiposit prg = new LletresdeParaulesAlDiposit ();
prg.proves();
}
private boolean lletresDeParaulesAlDiposit(String paraules, char[] diposit) {
boolean result = false;
int cont = 0;
char[] diposit2 = diposit;
char[] caracteres = paraules.toCharArray();
for(int j = 0; j < caracteres.length; j++){
boolean coincidencia = false;
int k = 0;
while(!coincidencia){
if (caracteres[j] == diposit2[k]){
System.out.println("SI: " + caracteres[j] + " - " + diposit[k]);
diposit2[k] = '*';
cont++;
coincidencia = true;
} else {
System.out.println("NO: " + caracteres[j]+ " - " + diposit[k]);
}
if(k < diposit2.length-1){
k++;
}else{
coincidencia = true;
}
}
}
System.out.println("-----");
System.out.println();
if (cont == caracteres.length){result = true;}
return result;
}
private void proves() {
char[] diposit = {'a','c','i','a','v','a','d','s','o','t','i'};
String paraules = "cav";
System.out.println("Son lletresAldiposit (si): ");
System.out.println(lletresDeParaulesAlDiposit(paraules, diposit ));
}
}
Saludos.
-
lo malo de tu programa que es que necesito que me compare varias palabras en este caso CAS , DIT.
necesito que esta parte:
private void proves() {
char[] diposit = {'a', 'c', 'i','a','v','a','d','s', 'o','t','i'};
String[] paraules = {"cas", "dit"};
System.out.println("Son lletresAldiposit (si): ");
System.out.println(lletresDeParaulesAlDiposit(paraules, diposit ));
sea así, si o si..
por eso no consigo que me salga el programa.. :(
Aparte debería de poder mostrar al final los caracteres que me quedan sin usar.. :(
-
¿Y no podría quedar así?
private void proves() {
String[] paraules = {"cas", "dit"};
System.out.println("Son lletresAldiposit (si): ");
for(String tmp : paraules){
char[] diposit = {'a','c','i','a','v','a','d','s','o','t','i'};
System.out.println(lletresDeParaulesAlDiposit(tmp, diposit ));
System.out.println("------------------------");
}
}Una cosa no me quedó clara, después de hacer la primera comparación, la segunda palabra tiene que compararse con las letras que quedaron en el depósito después de comparar la primera palabra?, o se compara con el deposito con todas las letras?
y para mostrar los caracteres que te quedan sin usar añadir lo siguiente, en el método lletresDeParaulesAlDiposit, antes del return result;
if (result){
String msg = "Caracteres que quedansin usar: ";
for(char tmp : diposit2){
if(!(tmp=='*')){msg += tmp + ",";}
}
System.out.println(msg);
}
-
No al código no se le puede añadir nada.
Y si la idea es que cuando un carácter se use y quede gastado.. :(
-
Bueno, aquí te dejo lo que conseguí, el método proves(), queda totalmente como dijiste.
public class LletresdeParaulesAlDiposit2 {
public static void main(String[] args) {
LletresdeParaulesAlDiposit2 prg = new LletresdeParaulesAlDiposit2 ();
prg.proves();
}
private boolean lletresDeParaulesAlDiposit(String[] paraules, char[] diposit) {
boolean result = false;
char[] caracteres = {};
int cont = 0;
int contCaracteres = 0;
for (String tmp : paraules){
caracteres = tmp.toCharArray();
System.out.println("La palabra buscada en el depósito será: " + tmp);
contCaracteres += caracteres.length;
for(int j = 0; j < caracteres.length; j++){
boolean coincidencia = false;
int k = 0;
while(!coincidencia){
if (caracteres[j] == diposit[k]){
System.out.println("SI: " + caracteres[j] + " - " + diposit[k]);
diposit[k] = '*';
cont++;
coincidencia = true;
} else {
System.out.println("NO: " + caracteres[j]+ " - " + diposit[k]);
}
if(k < diposit.length-1){
k++;
}else{
coincidencia = true;
}
}
}
System.out.println("-----\n\n");
}
if (cont == contCaracteres){
String msg = "Caracteres que quedan sin usar en el depósito: ";
for(char tmp2 : diposit){
if(!(tmp2=='*')){msg += tmp2 + ",";}
}
System.out.println(msg + "\n");
result = true;
}
System.out.println();
return result;
}
private void proves() {
char[] diposit = {'a','c','i','a','v','a','d','s','o','t','i'};
String[] paraules = {"cas", "dit"};
System.out.println("Son lletresAldiposit (si): ");
System.out.println(lletresDeParaulesAlDiposit(paraules, diposit ));
}
}
Espero que este te solucione tus problemas. ;D
Saludos.
-
ooohh!! ya veo que has substituido los usados por *!!!
Ostras no había pensado en eso!!! gracias!!! gracias!!!!!!!