elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Java  (Leído 2,414 veces)
SeñorX95

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Java
« en: 11 Marzo 2015, 22:27 pm »

Como le doy valores numericos a las letras asi:
a=1, b=2...z=26
A=27,B=28...
0=0,1=1....
Y a los demas valores el valor 10


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: Java
« Respuesta #1 en: 11 Marzo 2015, 22:32 pm »

Explica mejor lo que quieres hacer!


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
SeñorX95

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Java
« Respuesta #2 en: 11 Marzo 2015, 22:36 pm »

Teniendo un string
 
A cada letra (excepto la ‘ñ’) se le asocia un número entero: ‘a’->1,’b’->2, …,’z’->26, ‘A’-27, ‘B’->29, …

A cada dígito se le asocia el valor entero correspondiente: ‘0’->0, ‘1’->1, …

 Al resto de caracteres se le asocia el valor entero 10

En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Java
« Respuesta #3 en: 11 Marzo 2015, 22:50 pm »

Bueno, ya es hora de que pienses un poco, ¿no crees?. Coloca lo que has avanzado para que te ayuden.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
SeñorX95

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Java
« Respuesta #4 en: 12 Marzo 2015, 15:02 pm »

Tengo este codigo se podria hacer mejor?

Código
  1. for (int i=0; i<s.length();i++) {
  2.            char n1;
  3.            n1=s.charAt(i);
  4.  
  5.            boolean x=false;
  6.            if(n1>'0' && n1<'9'){
  7.                suma+=Integer.parseInt(""+n1);
  8.            }else{
  9.                if((n1<'a' || n1>'z') && (n1<'A' || n1>'Z')){
  10.                    suma+=10;
  11.                }else{
  12.                    for(int j=0;x==false;){
  13.                        char n2;
  14.                        n2=letras.charAt(j);
  15.                        if(n1!=n2){
  16.                            j++;
  17.                        }else{
  18.                            x=true;
  19.                            suma+=(j+1);
  20.                        }
  21.                    }
  22.                }
  23.            }
  24.        }
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Java
« Respuesta #5 en: 12 Marzo 2015, 15:26 pm »

Código
  1. if(n1>='0' && n1<='9'){
Mayor o igual y menor o igual. El '0' y el '9' están incluidos.


No es necesario que tengas la cadena 'letras'. Basta restarle a la letra, si es minúscula, 'a'-1, y si es mayúscula, 'A'-1. Así obtendrás obtendrás el número de la letra sin más complicacioón:

Código
  1. char c = 'b';
  2. int n = c-'a'+1; // n=2
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Java
« Respuesta #6 en: 12 Marzo 2015, 19:21 pm »

Primero, evalúa si el dígito es una letra. Si es así, evalúa si es minúscula o mayúscula. Si es minúscula se empezará a contar desde 1 y si es minúscula desde 27. Si no es una letra, el código será 10.

Código
  1. public class Digits {
  2.  
  3.    private final static char LOWER_CASE_START_LETTER = 'a';
  4.    private final static int LOWER_CASE_START_CODE = 1;
  5.    private final static char UPPER_CASE_START_LETTER = 'A';
  6.    private final static int UPPER_CASE_START_CODE = 27;
  7.  
  8.    public static Integer getCodeOf(char digit) {
  9.        Integer code = null;
  10.        if(Character.isLetter(digit)) {
  11.            char startLetter = (Character.isLowerCase(digit)) ? LOWER_CASE_START_LETTER : UPPER_CASE_START_LETTER;
  12.            if(Character.isLowerCase(startLetter))
  13.                code = getLetterCode(startLetter, digit, LOWER_CASE_START_CODE);
  14.            else
  15.                code = getLetterCode(startLetter, digit, UPPER_CASE_START_CODE);
  16.        } else { code = 10; }
  17.  
  18.        return code;
  19.    }
  20.  
  21.    private static int getLetterCode(char startLetter, char digit, final int START_CODE) {
  22.        Integer code = null;
  23.        if(startLetter == digit)
  24.            code = START_CODE;
  25.        else
  26.            code = START_CODE + getGapBetweenLetters(digit, startLetter);
  27.  
  28.        return code;
  29.    }
  30.  
  31.    private static int getGapBetweenLetters(char first, char second) {
  32.        return first - second;
  33.    }
  34.  
  35. }

Hagamos alguna prueba:

Código
  1. public class Test {
  2.    public static void main(String[] args) {
  3.        String word = "Hello world%".replaceAll(" ","");
  4.        System.out.println(word);
  5.        char[] wordLetters = word.toCharArray();
  6.        int sum = 0;
  7.        for(byte i=0; i<wordLetters.length; i++)
  8.            sum += Digits.getCodeOf(wordLetters[i]);
  9.        System.out.println("La suma es: "+sum);
  10.    }
  11. }

Resultado de la ejecución:

Código:
Helloworld%
La suma es: 160

Comprobemos:

Código:
H = 34
e = 5
l = 12
l = 12
o = 15
w = 23
o = 15
r = 18
l = 12
d = 4
% = 10

Suma de códigos: 160
« Última modificación: 12 Marzo 2015, 19:27 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines