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

Error de principiante en java

Estas en el tema de Error de principiante en java en el foro de Java en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original public class main {       public static void main ( String [ ] args ) {   ...
  #1 (permalink)  
Antiguo 25/10/2015, 15:51
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Error de principiante en java

Código Java:
Ver original
  1. public class main {
  2.  
  3.     public static void main(String[] args) {
  4.         System.out.println(firstNumber(13));
  5.     }
  6.  
  7.     public static int firstNumber(int num) {
  8.         if (num < 10) {
  9.             return num;
  10.         } else {
  11.             return firstNumber(num - (num % 10));
  12.         }
  13.     }
  14. }

Segun mi entender no deberia devolver ningun error, pero obtengo esto

Código:
Exception in thread "main" java.lang.StackOverflowError
	at controlador.main.firstNumber(main.java:12)
	at controlador.main.firstNumber(main.java:12)
	at controlador.main.firstNumber(main.java:12)
  #2 (permalink)  
Antiguo 25/10/2015, 16:09
Avatar de joseanguiano  
Fecha de Ingreso: agosto-2015
Ubicación: Coatzacoalcos
Mensajes: 87
Antigüedad: 8 años, 7 meses
Puntos: 1
Respuesta: Error de principiante en java

¿Que es lo que quieres hacer?

saludos
__________________
Lo fácil, ya lo hice, lo difícil lo estoy haciendo y lo imposible, me tardare pero lo lograre.
  #3 (permalink)  
Antiguo 25/10/2015, 16:25
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Error de principiante en java

Saber porque me devuelve error, no veo nada malo en el codigo!
  #4 (permalink)  
Antiguo 25/10/2015, 16:37
Avatar de joseanguiano  
Fecha de Ingreso: agosto-2015
Ubicación: Coatzacoalcos
Mensajes: 87
Antigüedad: 8 años, 7 meses
Puntos: 1
Respuesta: Error de principiante en java

Cita:
Iniciado por asdmaster Ver Mensaje
Código Java:
Ver original
  1. public class main {
  2.  
  3.     public static void main(String[] args) {
  4.         System.out.println(firstNumber(13));
  5.     }
  6.  
  7.     public static int firstNumber(int num) {
  8.         if (num < 10) {
  9.             return num;
  10.         } else {
  11.             return firstNumber(num - (num % 10));
  12.         }
  13.     }
  14. }

Segun mi entender no deberia devolver ningun error, pero obtengo esto

Código:
Exception in thread "main" java.lang.StackOverflowError
	at controlador.main.firstNumber(main.java:12)
	at controlador.main.firstNumber(main.java:12)
	at controlador.main.firstNumber(main.java:12)
Hola amigo, mira Java es un lenguaje de programación muy sensible a las mayusculas! Por otro lado tu clase "main" esta en minuscula por que no intentas asi Main
__________________
Lo fácil, ya lo hice, lo difícil lo estoy haciendo y lo imposible, me tardare pero lo lograre.
  #5 (permalink)  
Antiguo 25/10/2015, 17:55
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Error de principiante en java

Primero entiende siempre el motivo de la excepción

Cita:
public class StackOverflowError
extends VirtualMachineError
Thrown when a stack overflow occurs because an application recurses too deeply.
El error aparece cuandoun proceso recursivo se vuelve "demasiado recursivo"

¿Dónde usas tú la recursividad? En la línea 12

num = 13
num - (num % 10) = num
13 - 3 = 10
10 - 0 = 10
10 - 0 = 10
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 25/10/2015, 18:06
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Error de principiante en java

Gracias Xerelo por explicarme el error.
Saludos!

Etiquetas: principiante, string
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 14:23.