Duda supernob en java

Iniciado por Zetox, 9 Septiembre 2010, 16:15 PM

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

Zetox

Hola, he empezado a mirar un poco la programacion en java e intento realizar un primer ejercicio (el tipico que te saludo y te dice "Hola"). El caso es que a la hora de compilar me da un error.

El codigo es:

Código (java) [Seleccionar]
public class TestGreeting {
public static void main (String []arg){
Greeting hello=new Greeting();
hello.greet();
}
}

y
Código (java) [Seleccionar]

public class Greeting {
private void greet() {;
System.outprintln("hola");
}
}

El Error es:
TestGreeting.java:3: cannot find symbol
symbol  : class Greeting
location: class TestGreeting
               Greeting hello=new Greeting();
               ^
TestGreeting.java:3: cannot find symbol
symbol  : class Greeting
location: class TestGreeting
               Greeting hello=new Greeting();
                                  ^
2 errors


Alguien puede decirme q hago mal o q falta? He comprobado lo del Path y classpath y esta bien.

Gracias a todos

1mpuls0

Hola, lo que pasa es que tu metodo greet de la clase Greeting es de tipo private y solo esa clase puede acceder a el, para que otra clase (mediante un objeto como lo haces) pueda acceder necesita que sea tipo public, ademas despues del metodo out de la clase System te hace falta un punto xD. Y se te pasó un punto y coma de más, aun que no tendria que haber problemas al compilar


Un saludo
abc

Zetox

#2
OUCH!!  (por lo del punto jeje)

Ya corregi los errores, puse el punto, y le quite el ; de mas, pero me sigue saliendo el mismo error. No se si reinstalar el JDK

El caso q el archivo Greeting.java si me deja compilarlo de forma correcta, pero el otro no

Debci

Si has declarado ambas clases en un mismo archivo ahi esta tu error, si no, importalas una dentro de otra para usar los miembros de estas.

Saludos

1mpuls0

Cita de: Debci en  9 Septiembre 2010, 17:20 PM
Si has declarado ambas clases en un mismo archivo ahi esta tu error, si no, importalas una dentro de otra para usar los miembros de estas.

Saludos

No creo que tenga los dos en un mismo archivo  :rolleyes:

Citar
El codigo es:

Código
.

y

Código
.

Aun así intenta como te menciona debci, o solo quita la palabra public de la clase Greeting es decir tendrias
Código (java) [Seleccionar]
class Greeting {. Aunque lo mas recomendable es tener varios archivos.

PD. cambiasté el tipo de acceso del metodo greet de la clase Greeting?, es decir debes tener
Código (java) [Seleccionar]
public void greet() para que la clase TestGreeting pueda tener acceso a ella. Es que no veo que menciones nada sobre que hayas hecho ese cambio.

Un saludo
abc

afdlkglfgfdgfhgf

alomejor no haz importado la clase  :huh:

yo lo aria asi

Código (java) [Seleccionar]
public class TestGreeting {
public static void main (String []arg){
  Greeting hello=new Greeting();
  hello.greet();
}
}


class Greeting
{
private void greet()
{
        System.out.println("hola");
}
}



si te fijas le saque el public a la clase "Greeting" esto seria en el caso, de que estubieras codeando las dos clases en un mismo archivo, la clase Greeting seria "friend" de la clase "TestGreeting" , por ende podria utilizarla. en un archivo *.java , se permite solo UNA clase publica.

ahora si lo estas haciendo por separado, en el archivo que estas codeando la clase
"public class Greeting" deberias ponerle al comienzo del archivo y ademas la clase "Greeting" deberias ponerla como publica.

Código (java) [Seleccionar]
package NombreDePackage;

y en la clase public class TestGreeting deberias importar la clase "Greeting", deberias poner esto al comenzo del archivo.

Código (java) [Seleccionar]
import NombreDePackage.Greeting;
//En caso de tener mas de una clase en el mismo [i]package[/i] podrias poner
import NombreDePackage.*;
//El * significa que quieres importar todas las clases del package.




Eso seria , espero que te aya servido de algo.

PD: si hay algun error diganme, porque yo igual llevo poco en JAVA.

1mpuls0

#6
Cita de: juanplaz en 10 Septiembre 2010, 01:55 AM
PD: si hay algun error diganme, porque yo igual llevo poco en JAVA.


La clase TestGreeting tiene un objeto llamando hello con lo cual se intenta acceder al metodo greet de la clase Greeting, para esto el metodo greet debe de ser acceso public.

Código (java) [Seleccionar]
public void greet()

PD. Buena explicación lo del uso de paquetes
abc

afdlkglfgfdgfhgf

tenes razon, muchas gracias por tu correccion.

Xedrox

Una pregunta Zetox, que IDE usas ? Yo trabajo con eclipse y los errores que has tenido generalmente te avisa antes y te corrige automáticamente un montón de cosas.

Zetox

Gracias por todas las respuestas, seguire probando. Utilizo el editor Ultraedit. Usare el IDE Eclipse a ver q tal. OS comentare resultados


Gracias a todos ^_^