Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: rub'n en 28 Noviembre 2010, 19:23 PM

Título: como manejar Esta excepción aqui... ? suma simple
Publicado por: rub'n en 28 Noviembre 2010, 19:23 PM
Como manejo esta excepcion aqui ,,,   para controlar que el usuario no introduzca una letra

saludos!!!

Código (java) [Seleccionar]
import java.io.*;
public class Suma {

public static void main(String[] args) throws Exception{
  BufferedReader leer = new BufferedReader(new InputStreamReader(System.in));
int n=0,suma=0,k=1;

try{
System.out.println("introduce numero, y -1 para Finalizar: ");
n=Integer.parseInt(leer.readLine());
}
catch(Exception e){
System.out.println("introduce un valor numerico por favor ");
}

while(n != -1 ) {

suma+=n;

System.out.println("introduce valor, y -1 para Finalizar: ");
try{
n=Integer.parseInt(leer.readLine());
}
catch(Exception e){
System.out.println("introduce un valor numerico por favor");

}
}k++;

System.out.println("La suma es: "+suma);

}

}


introduce numero, y -1 para Finalizar
5
introduce valor, y -1 para Finalizar
a
introduce un valor numerico por favor
introduce valor, y -1 para Finalizar
-1
La suma es: 10
Título: Re: como manejar Esta excepción aqui... ? suma simple
Publicado por: Afsoon en 28 Noviembre 2010, 19:52 PM
Es una idea descabellada hay mas simples pero es la primera que se me ha pasado por la cabeza xD no me apetece pensar mucho que la necesito para los examenes XD, pero esta forma es la chapuza ya que le falta dar toques pero hay tienes un ejemplo de saber si es una letra o no

Código (java) [Seleccionar]

int n=0,suma=0,k=1;
String[] letras = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","ñ","o","p","q","r","s","t","u","v","w","x","y","z"};

System.out.println("introduce numero, y -1 para Finalizar: ");
n=Integer.parseInt(leer.readLine());
for(int a=0; a<=letras.lenght; a++)
{
if(n == letras[a]){
System.out.println("Inserte un número no una letra");
System.exit(0);
}

}


Te aconsejo no usar este metodo hay que darle muchos toques pero es un ejemplo es que no tengo mucho tiempo sino te haría uno en condiciones
Título: Re: como manejar Esta excepción aqui... ? suma simple
Publicado por: rub'n en 28 Noviembre 2010, 19:56 PM
ummm se ve bien Afsoon ,,, :) gracias por la ayuda
Título: Re: como manejar Esta excepción aqui... ? suma simple
Publicado por: Leyer en 28 Noviembre 2010, 22:13 PM
No estaras buscando algo asi sin usar try y catch

Código (java) [Seleccionar]
import java.util.Scanner;
public class Suma {
public static void main(String[] args) {
int n=0,suma=0;
Scanner scanner=new Scanner(System.in);
do{
suma+=n;
System.out.println("introduce valor, y -1 para Finalizar: ");
if(scanner.hasNextInt())n=scanner.nextInt();
else{
if(scanner.hasNext())scanner.next();
System.out.println("introduce un valor numerico por favor\n");
}
}while(n!=-1);
System.out.println("La suma es: "+suma);
}
}
Título: Re: como manejar Esta excepción aqui... ? suma simple
Publicado por: Shell Root en 28 Noviembre 2010, 22:34 PM
Hasta con ExpReg se puede,
Código (java) [Seleccionar]
  public static void sValidateNumbers(String sString){
    Pattern sPattern = Pattern.compile("^[0-9]*$");
    Matcher sMatcher = sPattern.matcher(sString);

    if ( !sMatcher.find() ){ System.out.println("NO, son numeros.\n"); }
    else{ System.out.println("SI, son numeros.\n"); }
  }
Título: Re: como manejar Esta excepción aqui... ? suma simple
Publicado por: rub'n en 29 Noviembre 2010, 00:57 AM
Gracias por la ayuda lo intentare

SaluDDoS !!!
Título: Re: como manejar Esta excepción aqui... ? suma simple
Publicado por: 1mpuls0 en 29 Noviembre 2010, 07:32 AM
Hay por lo menos 10 maneras diferentes de hacerlo.

Código (java) [Seleccionar]

               do {
System.out.println("introduce numero, y -1 para Finalizar: ");
num = leer.readLine();
}while(!isNumeric(num));
n=Integer.parseInt(num);


Métedo que usa el código de arriba.
Código (java) [Seleccionar]

private static boolean isNumeric(String string) {
try {
Integer.parseInt(string);
return true;
}
catch(Exception e) {
return false;
}
}



Usando banderas
Código (java) [Seleccionar]

boolean status = false;
do {
try{
System.out.println("introduce numero, y -1 para Finalizar: ");
n=Integer.parseInt(leer.readLine());
status=true;
}
catch(Exception e) {
status=false;
}
}while(status==false);



Usando otro método
Código (java) [Seleccionar]

do {
System.out.println("introduce numero, y -1 para Finalizar: ");
str = leer.readLine();
}while(isLetter(str));
n=Integer.parseInt(str);


Método del código de arriba
Código (java) [Seleccionar]

private static boolean isLetter(String string) {
if(string.matches("[a-zA-Z]"))
    return true;
    else
    return false;
}



Sin usar método ni try catch
Código (java) [Seleccionar]

String str="";
do {
System.out.println("introduce numero, y -1 para Finalizar: ");
str = leer.readLine();
}while(str.matches("[a-zA-Z]"));


Un saludo.
Título: Re: como manejar Esta excepción aqui... ? suma simple
Publicado por: rub'n en 30 Noviembre 2010, 18:58 PM
gracias men !! saluDDoS  gracias por la ayuda