[RESOLVIDO] Duvida sobre Class Public

15 respostas
R

Olá Pessoal, sou um membro novo no Forum, então vou me apresentar, antes de postar minha duvida ^^

Meu nome é Ronan, e estou estudando Analise e Desenvolvimento de Sistemas - 1º Semestre.
Na Minha Faculdade estamos trabalhando com C, contudo estou + interessado em aprender JAVA. Tambe quero aprender C, mais por enquanto vou levando o aprendizado de ambas =]

Para estudar JAVA, estou utilizando a Internet e o Livro - Use a Cabeça! JAVA. Estou gostando, apesar de algumas coisas que não estão 100% traduzidas (como a cruzada nos primeiros exercicios :frowning: )

Enfim, ainda nem sei utilizar direito o FORUM, mais vamos lá ^^

Bem, estava fazendo um exercicio desse livro, pelo Bloco de Notas, e quando vou compilar, ele dá erro.
o Erro diz

<blockquote>

C:\Users\Ronan\JAVA>javac gamelauncher.java

gamelauncher.java:1: class guessgame is public, should be declared in a file nam

ed guessgame.java

public class guessgame{

^

gamelauncher.java:66: class player is public, should be declared in a file named

player.java

public class player {

^

gamelauncher.java:4: p2 is already defined in guessgame

player p2;

^

gamelauncher.java:9: cannot find symbol

symbol  : variable p3

location: class guessgame

p3 = new player();

^

gamelauncher.java:27: cannot find symbol

symbol  : variable p3

location: class guessgame

p3.guess();

^

gamelauncher.java:35: cannot find symbol

symbol  : variable p3

location: class guessgame

guessp1 = p3.number;

^

gamelauncher.java:77: cannot find symbol

symbol  : variable guessgame

location: class gamelauncher

guessgame = new guessgame ();

^

gamelauncher.java:78: cannot find symbol

symbol  : variable game

location: class gamelauncher

game.startgame ();

^

8 errors</blockquote>

O Codigo não é muito pequeno, e peço desculpas c ficar desorganizado, mais n sei como colocar melhor isso (aceito sugestões =D)

Bem minha duvida é: como compilar? Tenho q dividir o codigo em varios arquivos? ou é erro na sintaxe?
O CMD diz que cada class public precisa estar declarada em um arquivo nomedaclasse.java, mais o livro não menciona dada

estão salvei somente com o nome da classe - public class gamelauncher - (creio que seja a principal ja q tem o metodo main).

Bem, como vcs viram, sou bem iniciante mesmo, então se vocês puderem tirar essa duvida, agradeceria muito =)

Peço desculpa por qualquer coisa, pois como eu disse não tenho experiencia, nem em JAVA nem nesse FORUM =D

Obrigado a todos.

15 Respostas

thiago.correa

Primeira regra, a sua classe java deve ser o mesmo nome do arquivo *.java

No seu caso, se a sua classe está declarada assim

public class MinhaPrimeiraClasseJava

então o seu arquivo obrigatoriamente deve se chamar

MinhaPrimeiraClasseJava.java

rafaelviny

o nome da classe ta diferente do nome que vc coloco no

public class player
R

Certo, isso eu sei, mais é que tem varias classes, e eu não sei qual delas deve ser NomeDoPrograma.java =]

nesse programa eu nomeei como: gamelauncher.java

OBRIGADO PELA RAPIDA RESPOSTA ^^

drigo.angelo

Isso realmente confunde que tá iniciando… quando eu tava no primeiro sem da facul quase 80% da sala (incluindo eu) ficamos empacados nisso aí quase uma aula inteira rsrs

então, complementando o thiago aí de cima, leia este link (em ingles) http://pt.w3support.net/index.php?db=so&id=968347
Cada arquivo pode ter quantas classes você quiser.

Cada arquivo deve ter uma única classe pública, que tem o mesmo nome do arquivo e, opcionalmente outras classes não públicas.

Quando você compilar um arquivo *.java que tenha mais de uma classe, será criado um arquivo *.class para cada classe :stuck_out_tongue:

Update:[size=18]<[/size]Apesar de ser possível mais de uma classe por arquivo, o comum é as classes serem públicas (e consequentemente, uma por arquivo)
Para você utilizar a classe externamente, ela deve ser pública[size=18]>[/size]

rael_gc

drigo.angelo:
Isso realmente confunde que tá iniciando… quando eu tava no primeiro sem da facul quase 80% da sala (incluindo eu) ficamos empacados nisso aí quase uma aula inteira rsrs

então, complementando o thiago aí de cima, leia este link (em ingles) http://pt.w3support.net/index.php?db=so&id=968347
Cada arquivo pode ter quantas classes você quiser.

Cada arquivo deve ter uma única classe pública, que tem o mesmo nome do arquivo e, opcionalmente outras classes não públicas.

Quando você compilar um arquivo *.java que tenha mais de uma classe, será criado um arquivo *.class para cada classe :P

Cara, não ensina o menino a fazer errado não. Até é permitido colocar várias classes num mesmo arquivo, mas além disso ser gambi, não vai permitir que nenhuma outra classe possa ser usada externamente (além da única pública).

Siga o bom conselho do outro amigo acima: coloque cada classe num arquivo NomeDaClasse.java. Você vai compilar a classe que tiver o método main, e automaticamente todas as classes referenciadas ali serão compiladas. Pra rodar, também, basta rodar a classe que tem o método main.

drigo.angelo

Opa, foi mal… não queria levar ninguém pro mal caminho… relamente pode ficar mais difícil de ler quando tem varias classes em um arquivo só… só estava expondo as possibilidades… (até porque nem eu faço isso)

Vo atualizar ali em cima :smiley:

rafaelviny

1- use o Code para ficar mais facil de entender

gamelauncher.java

public class gamelauncher {

    public static void main(String[] args) {
        guessgame meuGuessgame = new guessgame();
        meuGuessgame.startgame();
    }
}

guessgame.java

public class guessgame {

    player p1;
    player p2;
    //player p2;  //<- 2 variaveis com o mesmo nome
    player p3;

    public void startgame() {
        p1 = new player();
        p2 = new player();
        p3 = new player();

        int guessp1 = 0;
        int guessp2 = 0;
        int guessp3 = 0;

        boolean p1isright = false;
        boolean p2isright = false;
        boolean p3isright = false;

        int targetnumber = (int) (Math.random() * 10);
        System.out.println("Estou Pensando em um numero de 0 a 9 ...");

        while (true) {
            System.out.println("O Numero a adivinhar é " + targetnumber);

            p1.guess();
            p2.guess();
            p3.guess();

            guessp1 = p1.number;
            System.out.println(" O Jogador um forneceu o palpite " + guessp1);

            guessp1 = p2.number;
            System.out.println(" O Jogador dois forneceu o palpite " + guessp1);

            guessp1 = p3.number;
            System.out.println(" O Jogador tres forneceu o palpite " + guessp1);

            if (guessp1 == targetnumber) {
                p1isright = true;
            }
            if (guessp1 == targetnumber) {
                p1isright = true;
            }
            if (guessp1 == targetnumber) {
                p1isright = true;
            }

            if (p1isright || p1isright || p1isright) {

                System.out.println("Temos um Vencedor");
                System.out.println(" O Jogador 1 Acertou? : " + p1isright);
                System.out.println(" O Jogador 2 Acertou? : " + p2isright);
                System.out.println(" O Jogador 3 Acertou? : " + p3isright);
                System.out.println("Fim do JOgo");
                break; //fim do jogo, portanto saia do Loop
            } else {
//devemos continuar pq ninguem acertou
                System.out.println("Ninguem Acertou, Os Jogadores deve Tentar Novamente");
//fim do if/else
            }
        }//fim do loop
    }// fim do metodo
}//fim da classe

player.java

public class player {

    int number = 0; //onde entra o palpite

    public void guess() {
        number = (int) (Math.random() * 10);
        System.out.println("Estou Pensando em " + number);
    }
}

assim vai funcionar

me deve 1 cerveja :twisted:

adriano_si

Amigão, bem vindo ao fórum.

Outra dica que posso complementar é que ao nomear suas classes, use o padrão de nomenclatura Java. Acho que o Use a Cabeça deve ter esse padrão, se não tiver acha ele rapidinho no Google.

Abs [] e bons estudos.

Rafael, só não ganha a cerveja porque não o ensinou sobre o padrão de nomenclatura… heuehuehue

rafaelviny

caro adriano_si

estava trabalhando hahahaha, iria demorar muito em escrever o post

se vc reparar eu editei o meu post

tinha deixado meu imports

import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException;

mas para compensar como era o primeiro post dele ensinei a usar o code hahahahahahaa

1 copo de cerveja vale ne??

se nao valer fico satisfeito com um obrigado

A

Por que mais de uma classe no mesmo arquivo seria gambi?

E na verdade a classe fica com acesso default, ou seja, visível para todo o pacote.

drigo.angelo

Por que mais de uma classe no mesmo arquivo seria gambi?

E na verdade a classe fica com acesso default, ou seja, visível para todo o pacote.
Hehehe me perguntei a mesma coisa … :?
Mas externamente eu presumi que ele se referia a fora do pacote mesmo…

adriano_si

Bom aí é com ele… rsrsrsrsrsrs :smiley:

ronan… resolveu cara ?? dá um retorno…

rafaelviny

e se resolver seu problema altera o nome do topico para RESOLVIDO

R

OBRIGADO PESSOAL, Realmente, acho que estou devendo 1 cerveja a todos aki ^^

Primeiro,peço desculpa por não ter respondido antes. Estava na Faculdade, e so cheguei agora =]

Segundo, Obrigado d novo, realmente me esclareceu muito isso, e agora ja sei resolver uma boa parte dos problemas de meu livro ^^

Gostei muito do FORUM, pq todos ajudaram, e muito rapido, estava esperando uma resposta somente amanhã ou até depois, mais poucos minutos depois que eu mandei a pergunta, já havia gente respondendo, então, obrigado a todos que responderam, e os que não responderam mais passaram aki pra ajudar, mais não sabiam como, enfim, todos aki do FORUM. Obrigado ^^

:smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

COntinuando, eu ainda não testei o codigo, pq como eu disse, acabei de chegar, e pretendo tomar um banho e jantar antes ^^
Assim que eu testá-lo, volto e mudo o TOPICO PARA [RESOLVIDO] como disseram os colegas =)

===========================================================================================EDIT============

Funcionou PERFEITAMENTE, realmente merece uma caixa de cerveja, todo aki do FORUM =D

Vo Mudar para RESOLVIDO AGORA MESMO :smiley:

Vlw d novo

Mais uma vez Obrigado, e me aguardem, prometo voltar com uma duvida mais dificiu na próxima ^^

rafaelviny

ronan16 por nada

quando precisar estamos ai

estou apenas retribuindo a ajuda que tive enquanto iniciava no java

ainda bem que aqui na empresa eles não ligam que o povo fique no forum

Criado 18 de março de 2011
Ultima resposta 19 de mar. de 2011
Respostas 15
Participantes 7