Eai galera, sou iniciante em java e estou com uma dúvida neste código
importjava.util.*;importjavax.swing.*;publicclassJogoVelha{publicstaticvoidmain(String[]args){Jogoj1=newJogo();System.out.println("***Jogo da Velha***");Stringa=JOptionPane.showInputDialog("Entre com o nome do jogador1: ");Stringb=JOptionPane.showInputDialog("Entre com o nome do jogador2: ");Stringjogador1=a;Stringjogador2=b;System.out.println("Jogador 1: "+a);System.out.println("Jogador 2: "+b);Tabuleiro.imprimir();Jogador.jogar();classTabuleiro{Stringp1,p2,p3,p4,p5,p6,p7,p8,p9;voidimprimir(){System.out.println(p1+p2+p3);System.out.println(p4+p5+p6);System.out.println(p7+p8+p9);}}classJogo{}classJogador{Stringnome;Stringsimb;Jogoj;voidjogar(){}Stringp=JOptionPane.showInputDialog("Qual a sua posição? ");intx=Integer.parseInt(p);switch(x){case1:Tabuleiro.p1="x";break;case2:Tabuleiro.p2="x";break;case3:Tabuleiro.p3="x";break;case=4:Tabuleiro.p4="x";break;case=5:Tabuleiro.p5="x";break;case=6:Tabuleiro.p6="x";break;case=7:Tabuleiro.p7="x";break;case=8:Tabuleiro.p8="x";break;case=9:Tabuleiro.p9="x";break;}}}}
quando vou compilar aparecem os seguintes erros
:39: error: illegal start of type
switch (x) {
^
:39: error: expected
switch (x) {
:40: error: orphaned case
case 1:
^
gostaria que alguem me dissesse onde eu estou errando :(
Desde já, obrigado.
Você não pode ter instruções onde está esse switch ai em cima.
Vc tem apenas declarações de atributos como o String a.
O problema do seu switch, que o compilador reclama é idêntico a esse aí.
ViniGodoy
Aproveite e estude um pouco sobre indentação de código. Ela ajuda a identificar problemas desse tipo.
L
lucasstoffel
não entendi direito… eu preciso dar instruçoes de onde está o meu switch?
L
lsouza13
Não.
Vc precisa dar instruções em locais de instruções.
E declarar métodos e atributos em locais de declarações.
Você tá executando um switch no meio da classe, fora de qualquer método. Entendeu?
Você sabe bem o que é método, classe, objeto? Dê uma estudada a fundo nisso.
L
lucasstoffel
Entendi cara.
Eu preciso executar o switch dentro de um método, certo?
Vou estudar isso mais a fundo.
L
lsouza13
Isso mesmo.
Quando surgir as duvidas pode ir postando que a gente vai tentando te ajudar.
Valeu!
L
lucasstoffel
Cara, to executando meu switch dentro de um método agora, porém estou com um outro erro…
Quando vou compilar aparece o erro
:41: non-static variable p1 cannot be referenced from a static context
Tabuleiro.p1 = “x”;
^
L
lsouza13
Poste o código completo.
L
lucasstoffel
importjava.util.*;importjavax.swing.*;publicclassJogoVelha{publicstaticvoidmain(String[]args){Jogoj1=newJogo();System.out.println("***Jogo da Velha***");Stringa=JOptionPane.showInputDialog("Entre com o nome do jogador1: ");Stringb=JOptionPane.showInputDialog("Entre com o nome do jogador2: ");Stringjogador1=a;Stringjogador2=b;System.out.println("Jogador 1: "+a);System.out.println("Jogador 2: "+b);Tabuleiro.imprimir();Jogador.jogar();classTabuleiro{publicStringp1,p2,p3,p4,p5,p6,p7,p8,p9;voidimprimir(){System.out.println(p1+p2+p3);System.out.println(p4+p5+p6);System.out.println(p7+p8+p9);}}classJogo{}classJogador{Stringnome;Stringsimb;Jogoj;publicvoidjogar(){Stringp=JOptionPane.showInputDialog("Qual a sua posição? ");intx=Integer.parseInt(p);switch(x){case1:Tabuleiro.p1="x";break;case2:Tabuleiro.p2="x";break;case3:Tabuleiro.p3="x";break;case4:Tabuleiro.p4="x";break;case5:Tabuleiro.p5="x";break;case6:Tabuleiro.p6="x";break;case7:Tabuleiro.p7="x";break;case8:Tabuleiro.p8="x";break;case9:Tabuleiro.p9="x";break;}}}}}
L
lsouza13
Vou responder com uma pergunta pra vc ir aprendendo.
O que tem de errado nisso aí?
É o mesmo erro do seu programa.
Você não pode acessar uma variável de instância (um atributo) com A.x (a não ser que ele seja estática).
Você precisa entender porque existem variáveis estáticas e de instâncias. Veja se acha material sobre isso, sobre Orientação a Objetos. Talvez tenha alguma apostila da Caelum pra isto.
Fica um pouco difícil explicar em poucas linhas. São conceitos difíceis mesmo pra quem não conhece orientação a objetos. Portanto não se preocupe, normal essas dificuldades.
Abs.
L
lucasstoffel
Então como eu acesso uma variavel de instancia?
Eu ja baixei a apostila de Orientaçao a Objetos da Caleum, ja dei uma estudada, mas vou me aprofundar mais.
L
lsouza13
Você precisa criar um objeto da classe pra ter uma variavel de instância.
Quando vc tem uma um objeto, vc automaticamente tem uma referencia para cada var de instancia da classe (pra aquele objeto).
publicclassA{publicStringx;voidmetodo(){// acesso de dentro da propria classethis.x="oi";}}publicclassB{voidmetodoQualquer(){Aa=newA();a.x="teste";// considerando que neste caso, x em A é public}}
L
lucasstoffel
Cara valeu mesmo, consegui executar o switch
Qualquer outra duvida eu posto aqui, pode ser?