Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Meta en 21 Abril 2011, 13:36 pm



Título: No me funciona este programa
Publicado por: Meta en 21 Abril 2011, 13:36 pm
Hola:

Quiero saber el motivo de que no me funciona el programa.

Este es el programa.
Código
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5.  
  6. package mypkg;
  7.  
  8. /**
  9.  *
  10.  * @author Hunter
  11.  */
  12. public class Main {
  13.  
  14.    /**
  15.      * @param args the command line arguments
  16.      */
  17.    public static void main(String[] args) {
  18.        // TODO code application logic here
  19.        Fecha fecha = new Fecha(1, 4, 2005);
  20.        Hora hora = new Hora(17, 30);
  21.        Examen programación = new Examen("Programación en Java", "A105", fecha, hora);
  22.        System.out.println(programación.toString());
  23.        programación.setFecha(new Fecha(1, 6, 2005));
  24.        programación.setHora(new Hora(9, 0));
  25.        System.out.println(programación.toString());
  26.    }
  27.  
  28. }
  29.  

(http://www.subeimagenes.com/img/ssssssssssssssss-35394.jpg)

Saludo.


Título: Re: No me funciona este programa
Publicado por: BoF en 21 Abril 2011, 13:43 pm
Simplemente no te encuentra esas clases que estas intentando usar.


Título: Re: No me funciona este programa
Publicado por: .mokk. en 21 Abril 2011, 17:37 pm
Donde estan las clases Fecha,Hora y Examen?


Título: Re: No me funciona este programa
Publicado por: sapito169 en 21 Abril 2011, 20:10 pm
pues el unico que deberia saber eso eres tu de donde conseguiste el codigo ?


Título: Re: No me funciona este programa
Publicado por: Meta en 21 Abril 2011, 20:45 pm
Supuestamente el código completo.

Código
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5.  
  6. package mypkg;
  7.  
  8. /**
  9.  *
  10.  * @author Hunter
  11.  */
  12. public class Main {
  13.  
  14.    /**
  15.      * @param args the command line arguments
  16.      */
  17.    public static void main(String[] args) {
  18.        // TODO code application logic here
  19.        Fecha fecha = new Fecha(1, 4, 2005);
  20.        Hora hora = new Hora(17, 30);
  21.        Examen programación = new Examen("Programación en Java", "A105", fecha, hora);
  22.        System.out.println(programación.toString());
  23.        programación.setFecha(new Fecha(1, 6, 2005));
  24.        programación.setHora(new Hora(9, 0));
  25.        System.out.println(programación.toString());
  26.    }
  27.    public class Fecha{
  28.        private int día;
  29.        private int mes;
  30.        private int año;
  31.  
  32.        public Fecha(int día, int mes, int año){
  33.            this.día = día;
  34.            this.mes = mes;
  35.            this.año = año;
  36.        }
  37.  
  38.        public int getDía(){
  39.         return día;
  40.        }
  41.  
  42.        public int getMes(){
  43.            return mes;
  44.        }
  45.  
  46.        public int getAño(){
  47.            return año;
  48.        }
  49.  
  50.        public String toString(){
  51.            return día + "/" + mes + "/" + año;
  52.        }
  53.    }
  54.  
  55.    public class Hora{
  56.        private int hora;
  57.        private int minuto;
  58.        public Hora(int hora, int minuto){
  59.            if (hora < 0 || hora > 23 || minuto < 0 || minuto > 56){
  60.                throw new IllegalArgumentException();
  61.            }
  62.            else{
  63.                this.hora = hora;
  64.                this.minuto = minuto;
  65.            }
  66.        }
  67.  
  68.        public int getHora(){
  69.            return hora;
  70.        }
  71.  
  72.        public int getMinuto(){
  73.            return minuto;
  74.        }
  75.  
  76.        public String toString(){
  77.            return hora + ":" + (minuto < 10 ? "0" : "") + minuto;
  78.        }
  79.    }
  80.  
  81.    public class Examen{
  82.        private String asignatura;
  83.        private String aula;
  84.        private Fecha fecha;
  85.        private Hora hora;
  86.  
  87.        public Examen(String asignatura, String aula, Fecha fecha, Hora hora){
  88.            this.asignatura = asignatura;
  89.            this.aula = aula;
  90.            this.fecha = fecha;
  91.            this.hora = hora;
  92.        }
  93.  
  94.        public void setAsignatura(String asifnatura){
  95.            this.asignatura = asignatura;
  96.        }
  97.  
  98.        public void setAula(String aula){
  99.            this.aula = aula;
  100.        }
  101.  
  102.        public void setFecha(Fecha fecha){
  103.            this.fecha = fecha;
  104.        }
  105.  
  106.        public void setHora(Hora hora){
  107.            this.hora = hora;
  108.        }
  109.  
  110.        public String getAsignatura(){
  111.            return asignatura;
  112.        }
  113.  
  114.        public String getAula(){
  115.            return aula;
  116.        }
  117.  
  118.        public Fecha getFecha(){
  119.            return fecha;
  120.        }
  121.  
  122.        public Hora getHora(){
  123.            return hora;
  124.        }
  125.  
  126.        public String toString(){
  127.            return "Asignatura: " + asignatura +
  128.                    "\nAula: " + aula +
  129.                    "\nFecha: " + fecha.toString() +
  130.                    "\nHora: " + hora.toString();
  131.        }
  132.    }
  133. }
  134.  

Me da este fallo.
run:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - non-static variable this cannot be referenced from a static context
        at mypkg.Main.main(Main.java:19)
Java Result: 1
GENERACIÓN CORRECTA (total time: 3 seconds)


Título: Re: No me funciona este programa
Publicado por: 1mpuls0 en 21 Abril 2011, 21:49 pm
 :¬¬

Deja las clases Fecha, Hora y Examen fuera de la clase Main.

Es decir crea otros archivos java con el nombre de esas clases (Hora.java, Fecha.java y Examen.java)
Aunque también puedes dejarlos en el mismo archivo (pero fuera de la clase Main) y tendrías que quitar el public a cada clase (excepto Main).


Saludos.


Título: Re: No me funciona este programa
Publicado por: Meta en 22 Abril 2011, 05:57 am
Lo puse hacia fuera como dijiste y me funciona a la primera.

Una duda. Si lo dejo dentro en el mismo archivo como me dijiste sin el public, entonces funciona como dices???????????

Gracias por la ayuda, ahora lo entiendo un poco mejor.


Título: Re: No me funciona este programa
Publicado por: 1mpuls0 en 22 Abril 2011, 07:20 am
Lo puse hacia fuera como dijiste y me funciona a la primera.

Una duda. Si lo dejo dentro en el mismo archivo como me dijiste sin el public, entonces funciona como dices???????????

Gracias por la ayuda, ahora lo entiendo un poco mejor.

Si, debe de funcionar así.

Ojo dentro del mismo archivo, no de la misma clase, es decir.
El nombre de tu archivo debe tener el mismo nombre en donde se encuentre el método main ademas de que esa clase debe ser pública.

Código
  1. public static void main(String[] args) {}

Main.java
Código
  1. /*Clase Main*/
  2. public class Main{
  3.  // TODO add your handling code here:
  4. }
  5.  
  6. /*Clase Fecha*/
  7. class Fecha {
  8.  // TODO add your handling code here:
  9. }
  10.  
  11. /*Clase Hora*/
  12. class Hora{
  13.  // TODO add your handling code here:
  14. }
  15.  
  16. /*Clase Examen*/
  17. class Examen{
  18.  // TODO add your handling code here:
  19. }
  20.  


Saludos.


Título: Re: No me funciona este programa
Publicado por: Meta en 22 Abril 2011, 07:42 am
Gracias por la aclaración mi muy distinguido amigo.