Foro de elhacker.net

Programación => Java => Mensaje iniciado por: SeñorX95 en 11 Marzo 2015, 22:27 pm



Título: Java
Publicado por: SeñorX95 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


Título: Re: Java
Publicado por: Shell Root en 11 Marzo 2015, 22:32 pm
Explica mejor lo que quieres hacer!


Título: Re: Java
Publicado por: SeñorX95 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



Título: Re: Java
Publicado por: Usuario Invitado 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.


Título: Re: Java
Publicado por: SeñorX95 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.        }


Título: Re: Java
Publicado por: ivancea96 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


Título: Re: Java
Publicado por: Usuario Invitado 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