Foros del Web » Programación para mayores de 30 ;) » Java »

Aplicación por consola: errores varios

Estas en el tema de Aplicación por consola: errores varios en el foro de Java en Foros del Web. Buenas comunidad: Tengo una aplicación por consola de java (trabajo en eclipse) En la parte del ingreso de algunos parámetros, me tira errores: Al presionar ...
  #1 (permalink)  
Antiguo 13/10/2011, 14:46
 
Fecha de Ingreso: septiembre-2011
Mensajes: 40
Antigüedad: 8 años, 3 meses
Puntos: 0
Pregunta Aplicación por consola: errores varios

Buenas comunidad:

Tengo una aplicación por consola de java (trabajo en eclipse)

En la parte del ingreso de algunos parámetros, me tira errores:


Al presionar ENTER tira errores:


java.lang.ArrayIndexOutOfBoundsException: 1
at util.Util.validadorRut(Util.java:45)
at ProcedimientosAlmacenados.ProcedimientoAgregar.Agr egar(ProcedimientoAgregar.java:68)
at Inicio.Menu.<init>(Menu.java:46)
at Inicio.Inicio.main(Inicio.java:11)


Se puede solucionar esto poniendo next() en vez de nextLine(), PERO:

- Aparecen seguidas 2 líneas que debiesen estar separadas:
Ingrese nombre: ingrese apellido:

Sólo deja ingresar el campo apellido, saltándose el campo nombre.
El campo nombre queda en blanco.


Al dejar todo como next() resuelvo el problema de la tecla ENTER, PERO:

- No puedo ingresar nombres de cuicos.
Ej: Carmen Gloria ---> Gloria me lo asume como apellido

- Los apellidos compuestos no pueden ser ingresados.


Acá dejo la clase que llama al procedimiento almacenado de agregar personas:


import java.sql.*;
import java.util.*;
import java.io.*;

import util.Util;
public class ProcedimientoAgregar {

@SuppressWarnings("unused")
private Connection Conexion;
@SuppressWarnings("unused")
private CallableStatement cstmt = null ;


public ProcedimientoAgregar(Connection Con) {

Conexion = Con;
}

public static void Agregar() throws ClassNotFoundException, SQLException, IOException, InterruptedException
{
Scanner consola = new Scanner(System.in);
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
int opcion = 0;
String seleccion = "";


Class.forName("com.microsoft.sqlserver.jdbc.SQLSer verDriver");
Connection con=DriverManager.getConnection("jdbc:sqlserver://MARTE:1433;DatabaseName=Prueba", "sa", "gsiinformatica");
//Step-1

CallableStatement cstmt = con.prepareCall("{call ProcedAlmac_IngresarPersona(?,?,?)}");
Scanner sc=new Scanner(System.in);


// Si fuese integer System.out.print("Ingrese el numero tanto: ");
//int x=sc.nextInt();

System.out.println ("************************************");
System.out.println ("************************************");
System.out.println ("** **");
System.out.println ("** MODULO DE CARGAS **");
System.out.println ("** **");
System.out.println ("** 1 - Ingreso de datos **");
System.out.println ("** **");
System.out.println ("************************************");
System.out.println ("************************************");

System.out.println ("");

System.out.println("Ingrese el RUT sin puntos. Ej: 12114175-2 ");

String rut = sc.nextLine().toUpperCase();
rut = rut.replaceAll("\\.","");

// if(!ProcedimientoBuscar.ExisteRut(rut)){
//Si entra aquí, se produjo un error propagar excepcion
// System.out.println("");
// Thread.sleep(2000);
// ProcedimientoAgregar.Agregar();
//}
//else{
// Thread.sleep(2000);

//}

if(!Util.validadorRut(rut)){
//Si entra aquí, se produjo un error propagar excepcion
System.out.println("");
Thread.sleep(2000);
ProcedimientoAgregar.Agregar();
}
else{
Thread.sleep(2000);
}
if ((rut.length()<10)){
rut = "0"+rut+Util.validadorRut(rut);
}

System.out.println("Ingrese el nombre (SOLAMENTE EL PRIMER NOMBRE): ");
String nombre = sc.nextLine().toUpperCase();


System.out.println("Ingrese el apellido: ");
String apellido = sc.nextLine().toUpperCase();


//Step-2
cstmt.setString(1,rut);
cstmt.setString(2,nombre);
cstmt.setString(3,apellido);
//Step -3
cstmt.execute();
System.out.println("");
System.out.println("***Llamada a Procedimiento Almacenado****");
System.out.println("Registro Agregado con Exito!!!!!!");
con.close();

try{

do{
System.out.println("");
System.out.println("Desea seguir ingresando personas?");

System.out.println("");
System.out.println(" Opcion 1: Seguir - Opcion 2: Salir");
opcion = consola.nextInt();

switch (opcion) {
case 1:
System.out.println("Opcion 1: Seguir");
System.out.println("");
ProcedimientoAgregar.Agregar();
break;
case 2:
System.out.println("Opcion 2: Salir");
System.out.println("");
System.out.println("\nHasta Pronto!!!");
System.exit(2);
break;
default:
System.out.println("Seleccion no valida");
System.out.print("Pulse S si desea continuar o cualquier tecla y luego ENTER para salir: ");
seleccion = stdin.readLine();
}
} while (seleccion.equals("s"));
System.out.println("\nHasta Pronto!!!");
System.exit(4);

}catch(java.util.InputMismatchException ex){
System.out.println ("LA ENTRADA DEBE SER NUMERICA SOLAMENTE.");
System.exit(4);
}

}

}

Ayuda, por favor

Etiquetas: consola, jdbc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:03.