Autor Tema: Ayuda java...  (Leído 4639 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
Ayuda java...
« : octubre 09, 2008, 04:25:05 pm »
bueno vengo a pedir ayuda a ver si alguien tiene una idea d como se hace esto.... he pasado ya ratos intentando hacer esto pero gueno..

el problema es este

el programa tiene q pedir un numero de social insurance number de 9 digitos. ahora si el user mete 8 digitos o mas de 9 q de un error ... despues d uan hora arregle eso, pero ahora el gran problema q tengo y no se como hacer es q mediante un FOR loop sumar los 9 valores que estan dentro d esa variable.

lo q tengo es mas o menos asi

Código: [Seleccionar]
import java.util.Scanner;
/**
 * Write a description of class SocialInsuranceNumber here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class SocialInsuranceNumber
{
    public static void main(String[] args)
    {
        int sumOfNumbers, sinSize ;   //declare the variables for numbers
        String sin;                           //Declare the SIN variable
       
       Scanner keyboard = new Scanner(System.in);
       
       
       
       //Obteing the value of sin
       System.out.println("Enter your Social Insurance Number (SIN)");
       sin = keyboard.nextLine();
           
       sinSize = sin.length();
       if (sinSize != 9)
            System.out.println("Invalid input. Please try again.");
       else
       {

// este codiog de for lo tengo por la suma de numeros positivos menores q n ... cosa de otro programa.
//             sumOfNumbers = 0;
//            for (int i=1;i<=n;i++)
//             {
//                 sumOfNumbers = n*(n+1)/2;
//             } 
           
            System.out.println("Your Social Insurance Number is "+ sin);
           
       }
     }     
}


a ver si alguien tiene idea porq san google no me ha ayudado mucho

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re: Ayuda java...
« Respuesta #1 : octubre 09, 2008, 04:48:41 pm »
y porque no haces un array?
arreglo[1]=primernumero...arreglo[n]=ultimo
de hecho podes convertir esa string en un array fácilmente
 encontre esto x ahi mira:
public String[] stringtoArray( String s, String sep ) {
  // convert a String s to an Array, the elements
  // are delimited by sep
  StringBuffer buf = new StringBuffer(s);
  int arraysize = 1;
  for ( int i = 0; i < buf.length(); i++ ) {
    if ( sep.indexOf(buf.charAt(i) ) != -1 )
      arraysize++;
  }
  String [] elements  = new String [arraysize];
  int y,z = 0;
  if ( buf.toString().indexOf(sep) != -1 ) {
    while (  buf.length() > 0 ) {
      if ( buf.toString().indexOf(sep) != -1 ) {
        y =  buf.toString().indexOf(sep);
        if ( y != buf.toString().lastIndexOf(sep) ) {
          elements[z] = buf.toString().substring(0, y );
          z++;
          buf.delete(0, y + 1);
        }
        else if ( buf.toString().lastIndexOf(sep) == y ) {
          elements[z] = buf.toString().substring
            (0, buf.toString().indexOf(sep));
          z++;
          buf.delete(0, buf.toString().indexOf(sep) + 1);
          elements[z] = buf.toString();z++;
          buf.delete(0, buf.length() );
        }
      }
    }
  }
  else {
    elements[0] = buf.toString();
  }
  buf = null;
  return elements;
}
« Última Modificación: octubre 09, 2008, 04:51:23 pm por g00mba »

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Ayuda java...
« Respuesta #2 : octubre 09, 2008, 05:03:03 pm »
esto es lo mas sencillo que pude hacerlo, espero te sirva

Código: [Seleccionar]
int sinSum=0, sinIndex=0, sinSize=0;
String sinNumber;
sinSize = txtSim.getText().length();
sinNumber = txtSim.getText();

for(int i=0;i<sinSize;i++)
{
sinIndex = Integer.valueOf(sinNumber.substring(i,i+1));
sinSum = sinSum + sinIndex;
}

viendo tu codigo, ya vi que tenes validacion por si el datos tiene 9 caracteres, si tiene menos o mas no pasa, pero no verifica si lo que ingresaste es numero, aca te va

Código: [Seleccionar]
int sinSum=0, sinIndex=0, sinSize=0;
String sinNumber, validacion;
sinSize = txtSim.getText().length();
sinNumber = txtSim.getText();

if (isNumber(sinNumber) || sinSize!= 9) {
   for(int i=0;i<sinSize;i++)
   {
sinIndex = Integer.valueOf(sinNumber.substring(i,i+1));
sinSum = sinSum + sinIndex;
    }
}
else
{
     validacion = validacion + "El numero sim no es válido\n";
}

private boolean isNumber(String campo) {
try {
int a = Integer.parseInt(campo.trim());
return true;
} catch (NumberFormatException e)
  {
return false;
  }
}
« Última Modificación: octubre 09, 2008, 05:08:59 pm por Camus de Acuario »

Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
Re: Ayuda java...
« Respuesta #3 : octubre 09, 2008, 05:11:22 pm »
que hace esta parte no la enteindo bien

Código: [Seleccionar]
private boolean isNumber(String campo) {
try {
int a = Integer.parseInt(campo.trim());
return true;
} catch (NumberFormatException e)
  {
return false;
  }
}


si sirvio como lo dejaste ... pero este no quiero poner aun mas cosas de la validadacion sin q me expliques un poco como es q hiciste con el

Código: [Seleccionar]
sinIndex = Integer.valueOf(sin.substring(i,i+1));
para q el nombre sinIndex de la variable...  que es lo q hace en si el integer.valueof ????  y esto d dond saca el valo sinNumber = txtSim.getText();   ???? es para leerlo  d un txt

por el moemento lo he dejado asi

Código: [Seleccionar]
import java.util.Scanner;
/**
 * Write a description of class SocialInsuranceNumber here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class SocialInsuranceNumber
{
    public static void main(String[] args)
    {
        int sum, sinSize, sinIndex ; //declare the variables for numbers
        String sin;
       
       Scanner keyboard = new Scanner(System.in);
       
       
       
       //Obteing the value of n
       System.out.println("Enter your Social Insurance Number (SIN)");
       sin = keyboard.nextLine();
           
       sinSize = sin.length();
       if (sinSize != 9)
            System.out.println("Invalid input. Please try again.");
       else
       {
            sum = 0;
            for(int i=0;i<sinSize;i++)
            {
                sinIndex = Integer.valueOf(sin.substring(i,i+1));
                sum = sum + sinIndex;
            }
           
            System.out.println("Your Social Insurance Number is "+ sin + "the sum is " + sum);
           
       }
     }     
}
« Última Modificación: octubre 09, 2008, 05:20:35 pm por moyo18 »

Desconectado JGuillen™

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3449
  • PHP,C#,MySQL,SQL
Re: Ayuda java...
« Respuesta #4 : octubre 09, 2008, 05:25:43 pm »
yo no se mucho de Java pero a ver.....


Yo lo haria a si...

Código: [Seleccionar]

int Total = 0;
String strNumero = "123456789";

for(int i = 0; i < strNumero.length(); i++)
{
    Total = Total + Integer.parseInt(strNumero.charAt(i));
}



A ver alquien q me diga si realmente funciona a si como yo lo pienso hacer..?
« Última Modificación: octubre 09, 2008, 05:31:31 pm por JGuillen™ »

Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
Re: Ayuda java...
« Respuesta #5 : octubre 09, 2008, 05:35:03 pm »
da un error guillen... a mi me funciono como me dijo camus... es para un assignment q tengo pero es la parte 1.... la otra parte es dificil tambien asi q no se sorprenda si caigo por aqui d regre si no logre hacerlo.

mas o menos tengo q validar el social insurance number canadiense en el programa y se hace con el Luhn algorithm mas o menos akie sta la info

http://en.wikipedia.org/wiki/Social_Insurance_Number

lo de la suma es paraahora pero la validacion esa es para la otra semana...

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Ayuda java...
« Respuesta #6 : octubre 09, 2008, 05:38:32 pm »
que hace esta parte no la enteindo bien

Código: [Seleccionar]
private boolean isNumber(String campo) {
try {
int a = Integer.parseInt(campo.trim());
return true;
} catch (NumberFormatException e)
  {
return false;
  }
}

esa parte es para verificar si el valor que has pasado es un entero o no, te devuelve true o false dependiendo si es entero o no, hace esto:
-creas una variable a de tipo int
-Integer.parseInt() es una funcion que te convierte un string o char a su equivalente int
-campo.trim(), campo es la variable que le pasas, trim() es para quitarle espacios vacios o " "
Si al hacer la conversion a int y asignarsela a la variable a, da resultado, la funcion regresa true, por lo que si es numero
si no, el catch capta el error de NumberFormatException, o excepcion de formato numerico y devuelve false, por lo que no es numero

Código: [Seleccionar]
sinIndex = Integer.valueOf(sin.substring(i,i+1));para q el nombre sinIndex de la variable...  que es lo q hace en si el integer.valueof ????  y esto d dond saca el valo sinNumber = txtSim.getText();   ???? es para leerlo  d un txt

-sinIndex es la variable donde se va guardando por cual numero del textbox esta leyendo, si pones 1234, el primer valor de sinIndex sera 1, luego 2, luego 3 y luego 4.
-integer.valueof() da el mismo resultado de Integer.parseInt(), osea convertir a int
-sinNumber lo sacas de donde vos querras, ese va a ser el numero de 9 digitos, yo por cuestion de ejemplo lo puse desde un TextField

espero te sirva
« Última Modificación: octubre 09, 2008, 05:40:53 pm por Camus de Acuario »

Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
Re: Ayuda java...
« Respuesta #7 : octubre 09, 2008, 05:41:56 pm »
gracias por la explicacion me quedo muy clara.... seguire con la parte 2 de mi trabajo