Bem-vindo de volta ao curso da cidade do conhecimento sobre programação em Java. Sou Cliff Brozo, sou seu instrutor. E na lição de hoje, vamos aprender sobre como depurar um programa. Se você se lembra, este é o programa que acabamos de examinar aquele que envolveu a instrução switch e as declarações if e até mesmo retirando o mês do calendário. Neste programa, inseri um monte de erros que não estavam lá da última vez que o compilamos vamos executá-lo desta vez e ver o que acontece. O primeiro erro que recebo aponta para a linha 17 e na parte inferior, diz main.java 17 e me diz que cometi um erro que não é uma declaração. E a declaração na qual ele está interessado é scan.close. Neste caso particular, o que precisamos entender é que fechar é uma função e todas as funções devem terminar com parênteses abertos e fechados. Portanto, o fato de não ser uma declaração realmente significa que eu preciso entrar logo após a palavra fechar e coloque parênteses abertos e fechados. Agora, o truque para depurar um programa é fazer apenas uma alteração de cada vez. Mesmo se você ver coisas que estão erradas, espere até que o compilador lhe diga que você cometeu um erro. Se você fizer muitas mudanças, você pode acabar mudando algo que está correto e transformá-lo em algo incorreto. Portanto, fazemos uma alteração de cada vez. Vamos recompilar. Ele aponta agora para a linha 52, e vou rolar para baixo até a linha 52, e diz diferença == seu mês - mês + 1. Neste erro, temos que lembrar que há uma diferença entre o sinal de igual e o sinal de igual igual. Os testes de igualdade igual para igualdade enquanto o único sinal de igual coloca um valor no lado esquerdo da equação. Nesse caso, a única vez que eu usaria um sinal de igual duplo é com uma declaração if ou uma declaração while em todas as outras ocorrências, Eu quero usar um único sinal de igual que vou pegar o resultado desse cálculo esse é o seu mês menos o mês, mais um, e coloque-o na diferença variável. E a maneira como faço isso é com um único igual. Como dissemos, uma mudança e recompilação, Java linha 66 diz que é um erro e atingiu o final do arquivo durante a análise. O que está acontecendo aqui é que estou faltando uma chave estreita e o IDE tenta nos ajudar colocando essas linhas verticais em que nos ajudam a alinhar esses colchetes. E se eu seguir este até o fim, Posso ver que esse fechamento é correspondente à minha rotina principal String Args public static void. Olhe na linha quatro e eu tenho um aberto e não há fechamento correspondente. Então, enquanto o compilador estava passando e verificando todo o código, chegou ao fim do arquivo. E não encontrou uma chave estreita. Vou colocar um e acho que vou terminar porque só falta um erro, mas estou enganado. Eu coloquei e ainda diz a mesma coisa. Hmm, isso é uma coisa interessante porque eu acabei de consertar aquele código e me deu o mesmo erro. Quando isso acontece, você tem que voltar e olhar e verificar para se certificar de que todos os seus colchetes abertos têm colchetes correspondentes. Vou subir ao topo do programa. Eu tenho um aberto, tenho dois abertos, linhas quatro e linha seis, a linha 23 tem uma abertura para a instrução switch. E eu sigo essas linhas para baixo e vejo que não há fechamento para a instrução switch. Então Java não sabe disso, o que Java sabe é que há apenas uma quantidade desigual de colchetes. E diz que cheguei ao fim do arquivo e não encontrei o colchete final. Vou colocar um e, mais uma vez, acho que terminei. Oh, não, não estou. Eu consertei aquele único erro e agora eu tenho um, dois, três, quatro, cinco, seis, sete oito, nove, quase todas as linhas se tornam um erro. E é aqui que você começa a entrar em pânico. Tenho 20 erros quando cometi apenas um. Como isso acontece? Bem, o computador não sabe os detalhes de cada linha até que ela termine passando por todo o programa, certificando-se de que todas as suas rotinas são abertos e fechados corretamente. Então, quando ele compilou da última vez e me disse que eu tinha um erro, Eu coloquei aquele único erro e agora dizia tudo bem, Vou entrar e olhar cada linha individualmente. Então é isso que temos que fazer. Minha primeira linha fala comigo e diz: linha três, classe pública principal. A aula principal é pública, ele deve ser declarado em um arquivo chamado main Java. Bem, esta é uma indicação bem aqui, principal Java é uma indicação de como os arquivos devem ser nomeados. Mas, no meu caso, tenho um arquivo chamado Main.java com M maiúsculo Então, ele está me dizendo que esse M deve estar em maiúsculas. Então, vou colocar um M maiúsculo. Como eu disse, embora eu saiba que tenho mais 19 erros, Vou recompilar porque uma mudança pode produzir vários erros. Agora isso me traz de volta à primeira linha e disse, o erro não pode encontrar o símbolo. E o pequeno ponteiro aqui que diz, foi aqui que tudo ficou confuso. Estava procurando um símbolo da classe de scanner. E neste caso particular, bem, eu não soletrei scanner com S maiúsculo e a capitalização é importante. Eu faço um S maiúsculo, recompilo novamente. Agora está me dizendo, a linha 15 me diz que não consegue encontrar o símbolo Scanner.nextInt, e está olhando e não existe scanner. Eu chamei meu scanner de digitalização, não Scanner. Portanto, o código correto é Scan.nextInt.