Duda_con condicion if

Iniciado por Tuplado, 27 Diciembre 2012, 14:42 PM

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

Tuplado

Hola buenas tardes.

Estoy haciendo un emulador de cajero con Java y me ha surgido una duda en un condicional if dentro de un método.

Me explico mejor entro por consola un numero, lo transformo a String y calculo la longitud de la String y me da un numero, según el tamaño de la misma.

Efectuo if (cadena == 20) // y no me cumple esta condición.

Adjunto los dos archivos el Main, y el de los metodos.

METODO MAIN
=========


package cuenta;

public class Cuenta {
   public static String name;
   public static String convert;
   public static long account;  
   

   // METODO MAIN
   public static void main(String[] args) {
     // INSTANCIA DEL CONTRUCTOR DATOS  
     CuentaAcciones datos = new CuentaAcciones(name, account,convert);  
     datos.introducirNombre(name);
     datos.introducirCuenta(account);
}
       
   }


CLASE DE LOS METODOS
================

package cuenta;

import javax.swing.JOptionPane.*;
import java.awt.Toolkit;
import java.util.InputMismatchException;
import java.util.Scanner;

public class CuentaAcciones {  // CLASE PRINCIPAL

   // ATRIBUTOS DE LA CLASE
   private long cuenta;
   private String convierteNumeroCadena;
   private String nombre;


   // CONSTRUCTOR DE DATOS BANCARIOS
   public CuentaAcciones(String nombre, long cuenta, String convierteNumeroCadena){
       this.nombre = nombre;
       this.cuenta = cuenta;
       this.convierteNumeroCadena = convierteNumeroCadena;
   }
 
// METODOS    
void introducirNombre(String nombre){
   Scanner teclado = new Scanner(System.in); // CAPTURA DEL TECLADO    
// DECLARACION DE VARIABLE TIPO STRING
boolean esCadena = false; // OBLIGA A ENTRAR AL BUCLE WHILE

while (esCadena==false){ // BUCLE WHILE

// IMPRIME NOTAS ACLARATORIAS PARA EL USUARIO  
System.out.println("    INSTRUCCIONES DE USO"       );
System.out.println("-------------------------------");
System.out.println("_El nombre va sin acentos y sin ");
System.out.println(" sin excederse de 15 caracteres ");
System.out.println("-------------------------------\n");

// IMPRIME DATOS BANCARIOS
System.out.println("=======================" );  
System.out.println("*** DATOS BANCARIOS ***" );
System.out.println("=======================" );

// NOMBRE DEL USUARIO
System.out.print("Introduzca su nombre: ");
nombre=teclado.next();

// (MATCHES)INCLUYE LETRAS MAYUSCULAS Y MINUSCULAS Y ESPACIOS EN BLANCO
// Y LA LONGITUD DE CADENA NO PUEDE SER SUPERIOR A 26 CARACTERES
if (nombre.matches("[[a-z]A-Z]*") && (nombre.length() <= 15)){
 System.out.println("Hola "+nombre);
 esCadena = true; // SALE DEL BUCLE
}
     
else{
   System.err.println("¡Error al introducir el nombre!"); // SALIDA POR CONSOLA
   Toolkit.getDefaultToolkit().beep();  // ESTO GENERA UN BEEP
 esCadena = false; // SE MANTIENE EN EL BUCLE
}

}
   
}
void introducirCuenta(long cuenta){
boolean esNumero = false;  
while (esNumero==false){
   
try{
   Scanner tecladoCuenta= new Scanner(System.in);
   System.out.println("[ENTIDAD ] [OFICINA] [DIGITOS DE CONTROL] [Nº CUENTA]");
   System.out.println("[4 DIGIT ] [4 DIGIT] [     2 DIGIT      ] [10 DIGIT ]");
   System.out.print("Introduzca su numero de cuenta bancaria: ");
   cuenta=tecladoCuenta.nextLong();
   
       this.convierteNumeroCadena = String.valueOf(cuenta);
       System.out.println(convierteNumeroCadena.length());
       long cadena = convierteNumeroCadena.length();
       
   if (convierteNumeroCadena.length() == 20){ // NO SE PQ NO SE CUMPLE ESTO  
     esNumero = true;
     System.out.println("Su numero de cuenta es: "+this.convierteNumeroCadena);
   }
   else{
     System.err.println("¡Error al introducir el numero de cuneta!"); // SALIDA POR CONSOLA
     Toolkit.getDefaultToolkit().beep();  // ESTO GENERA UN BEEP
     esNumero = false;
   }
}

catch (InputMismatchException e)
{
   System.err.println("¡Error al introducir el numero de cuneta!"); // SALIDA POR CONSOLA
   Toolkit.getDefaultToolkit().beep();  // ESTO GENERA UN BEEP
   esNumero = false;
}
}}}

1mpuls0

#1
Utiliza BigInteger en lugar de long.

Código (java) [Seleccionar]
import java.math.BigInteger;

Felices Fiestas.

Por cierto es cuenta no cuneta xD
abc

Tuplado

Sii ya me di cuenta, gracias, mira lo voy hacer con String

Felices Fiestas a tí también.

1mpuls0

Es lo que te iba a sugerir (usar String) por el caso de los números de cuenta que inician con "0" pero pensé que tenías tus razones para utilizar número entero.


Saludos
abc