Possíveis erros e dúvidas no "Use a Cabeça! Java" ( Tradução da 2ª Edição)

Deixe-me primeiro argumentar o motivo desse novo tópico.

  1. É um livro usado por muitos que iniciam na área de programação e mais precisamente na linguagem.
  2. Vi alguns comentários em tópicos a respeito de erros e comparando-o com o do Deitel mais tudo muito aleatório. Portanto gostaria que esse tópico ficasse para uso exclusivo de iniciantes que estão usando o mesmo e tendo dúvidas a respeito de algum assunto relacionado ou enfrentando problemas com os códigos ( o primeiro exercício que tentei já deu erro ) .
  3. O livro já adverte que os erros nos códigos possivelmente aparecerão. (Ver último parágrafo da página 23). Obs. Outros argumentos poderiam ser apresentado porém acredito que os mesmo bastam p justificar o prq desse tópico. Sendo assim contamos com a gentileza e boa vontade dos mais experientes para drimir as possíveis dúvidas e apresentar os possíveis erros existentes nos códigos. A propósito, alguém poderia criar também um tópico específico para os que estão vendo/lendo/estudando pelo “Java, Como Programar” ( 6ª Edição/Deitel ).

Meu primeiro problema com um código do “Use a Cabeça Java”. Abaixo o código fonte como está no arquivo, salvei como Party.Java

[code] import java.awt.;
import java.awt.event.
;

class party {

  public void  buildInvite ( )   {
     
     Frame f = new Frame ( );
     Label l = new

Label ( “Party at Tim’s” );
Button b = new

Button ( " You bet" );
Button c = new

Button ( “Shoot me” );
Pannel p = new Panel ( );
p.add (1);

  }            // mais código aqui...

} [/code]

 Erro apresentado é: 
    [b]     Party.java:18: Cannot find symbol
          symbol: class Pannel
         location: class party
                      Pannel p = new Pannel  ( );
                     ^

[/b]

É isso. Grato a todos.

Não conheço nenhum Pannel no AWT e sim Panel.

Se for erro do livro também foi erro seu ao digitar, logo que o código que postastes difere da mensagem de erro. E para corrigir esses erros, a documentação é mais do que sua amiga.

Até!

O erro ocorre pelo fato de o método add esperar um objeto (label, button,etc) ao invés de um valor do tipo inteiro.

Um abraço. :wink:

[quote]Não conheço nenhum Pannel no AWT e sim Panel.

Se for erro do livro também foi erro seu ao digitar, logo que o código que postastes difere da mensagem de erro. E para corrigir esses erros, a documentação é mais do que sua amiga. [/quote]

É justo, esse foi erro meu! Corrigi o mesmo mas continua dando erro.

mensagem de erro é:

Party.java:19: Cannot find symbol
symbol: method add (int)
location: class.java.awt.Panel
p.add.(1);
^

Ps: Estou começando agora isso é na área de programação, isto é: nunca programei em nenhuma linguagem! Essa declaralçao tem que ser baixada no site da Sun é isso? Se quiser dar uma esclarecida p moçada que está iniciando saber o que é essa documentação certamente ajuda sim! Vlw.

[quote] O erro ocorre pelo fato de o método add esperar um objeto (label, button,etc) ao invés de um valor do tipo inteiro.
[/quote]
Hein Márcio, e como é que corrijo isso? Abraço.

Bom primeiro tem o erro do panel como ja falaram , o certo seria…
Panel p = new Panel ( ); // mas esse vc ja corrigiu , certo ?

o proximo erro esta no lugar que o brother acima falou, mas pude perceber que vc causou uma pequena confusão.
ao fazer isto
p.add (1);
nos paineis voce adiciona componentes, e nao um numero inteiro, o livro provavelmente não esta errado neste codigo oque voce deve ter confudido foi que
no livro deve tar p.add(l) // isso aqui e um L e não um 1
ou seja voce adicionou o numero 1 invez do L ,
e o L seria o Label que ja esta declarado acima no codigo…

Label l = new Label ( “Party at Tim’s” );

entao basta substituir o seu 1, por l , por isso e sempre melhor usar nomes mais expressivos pras variaveis invez de uma só letra.

e so mais uma coisa se voce realmente salvou o arquivo como Party.Java o nome da classe party devia estar com a 1° letra em maisculo tambem…
assim:
class Party {

espero ter ajudado flw.

 Como matar uma mosca hehehe. Direto. Compilou na hora! Só que não está rodando/executando. Para executar eu devo mudar o diretório, digitar [i]Java Party [/i] certo? A mensagem de erro: [b] Exception in thread "main" java.lang. NoSuchMethodError: main [/b]

Vlw Willy.

Danúzio, bom dia e um Feliz ano novo, não só a você mas a todos os participantes e leitores dos FORUM’s do site GUJ.com.br.

Bem vamos a sua dúvida, o erro Exception in thread “main” java.lang. NoSuchMethodError: main ocorre pois a sua classe não tem o método principal para qualquer classe que é o MAIN(), apesar de não ser obrigatório para a execução como você quer da classe, este método é requerido pois é ele quem o compilador ou a JVM irão procurar para executar logo de inicio. Tente alterar o seu código para o seguinte:


 import java.awt.*;  
 import java.awt.event.*;  
   
 class Party{  
   
    public void  buildInvite ()   {  
         
       Frame frm = new Frame ();  
       Label lbl = new  
   
 Label ("Party at Tim's");  
             Button btn1 = new  
   
 Button (" You bet");  
             Button btn2 = new  
   
 Button ("Shoot me");  
             Panel p = new Panel ();  
             p.add (lbl);  
      
    }            // mais código aqui...  
} 

Salve como Party.java com o ‘P’ em maiúsculo, verifica se agora funciona, também sou iniciante e estudei com as apostilas da CAELUM que são disponibilizadas Gratuitamente no site. Muito boas.

Abraços
E me informe se funcionou.

[quote] o erro Exception in thread “main” java.lang. NoSuchMethodError: main ocorre pois a sua classe não tem o método principal para qualquer classe que é o MAIN(), apesar de não ser obrigatório para a execução como você quer da classe, este método é requerido pois é ele quem o compilador ou a JVM irão procurar para executar logo de inicio. Tente alterar o seu código para o seguinte:

[/quote]

Fiz a mudança, ficou assim.

[code] import java.awt.;
import java.awt.event.
;

class Party {

  public void  buildInvite ( )   {
     
     Frame frm = new Frame ( );
     Label lbl = new

Label ( “Party at Tim’s” );
Button btnl = new

Button ( " You bet" );
Button btn2 = new

Button ( “Shoot me” );
Panel p = new Panel ( );
p.add (lbl);

   }            // mais código aqui...

} [/code]

Compila direito também, entretanto a mensagem de erro na execução continua a mesma!
Exception in thread “main” java.lang. NoSuchMethodError: main
Li que um programa deve conter pelo menos um método main para que a JVM. [i] " Independente do tamanho do seu programa ( em outras palavras, não importa quantas classes o seu programa vai usar ), é preciso que haja um método main que dará inicio ao processo". Use a Cabeça Java, pg 6, último parágrafo.

[quote] Danúzio, bom dia e um Feliz ano novo, não só a você mas a todos os participantes e leitores dos FORUM’s do site GUJ.com.br.
[/quote]
Obrigado Paulo, um feliz 2008 p ti também e agradeço a atenção.

cara tem algumas coisas que falta nesse codigo pra iniciar apartir dele…
bom pra começar o main, toda execução precisa de um ponto de partida.
entao basta acrescentar a sua classe como um metodo a mais… um
public static void main (String []args )
{
new Party();
}

bom isso ai executaria a tua classe, mas iria logo encerrar e não ia mostrar nada, ou seja tu nao ia nem perceber que executou, acredito eu que tu queira
ver um painel na tua tela, pra começar tu precisa declarar um Frame pelo que vi ja tem um no teu codigo na “linha 13” mas nao ta sendo usado… entao vo termina pra ti…
e faltou tambem tu declar um metodo construtor de classe, pra fazer chamada pro teu metodo buildinvite, porque ele nao tava sendo chamado em lugar nenhum…

  import java.awt.*;
import java.awt.event.*;

import javax.swing.JFrame;

   class Party   {
   public Party(){ //metodo construtor
	   buildInvite(); //chamada pro metodo buildInvite()
   }
         
      public void  buildInvite ( )   { 
         
         Frame frm = new Frame ( );
         Label lbl = new
   
   Label ( "Party at Tim's" );
               Button btnl = new
  
   Button ( " You bet" );
               Button btn2 = new
 
   Button ( "Shoot me" );
               Panel p =  new Panel ( );
               p.add (lbl);
               frm = new JFrame("titulo");
               frm.add(p); //adiciona o Painel ao Frame
               frm.pack(); //compacta o tamanho dos componentes que foram adicionados ao frame, 
               				//pra ficarem de um tamanho no minimo visível.
               frm.setVisible(true); // exibe a janela na tela
    
       }            // mais código aqui...
      public static void main (String [] args ){
    	  new Party(); // inicia a classe party randomicamente
    	  
      }
   } 

[code]
import java.awt.;
import java.awt.event.
;
import javax.swing.JFrame;

         class Party   
         {
   
            public Party ( )
            { 
               // método construtor
         
                 buildInvite ( ); // chamada para o método buildInvite
             
                 }    // fechamento do método construtor builInvite
     
            public void  buildInvite ( )   
            {
     
                Frame frm = new Frame ( );
                Label lbl = new

        Label ( "Party at Tim's" );
           Button btnl = new

        Button ( " You bet" );
           Button btn2 = new

        Button ( "Shoot me" );
           Panel p =  new Panel ( );
           p.add (lbl);
           frm.add(p);    // adiciona ao painel frame
           frm.pack( );  //  compacta o tamanho dos componetes que foram adicionados ao frame,
                             //para ficarem de um tamanho mínimo vicível.
           frm.setVisible (true);
              // exibe a janela na tela

             }     // mais código aqui...
            
           public static void main (String [] args )
           {
 
              new Party ( );
                 
               // inicia a classe party randomicamente                 
           
           }   //fechamento do método main

        }   // fechamento da classe Party[/code]

Resultado: Compilou e rodou, mas com um código desse tamanho esperava até fogos de artifício! Apareceu um painel na tela com a expressão: Party at Tim’s ( Mas valeu sim, esclarecida e fardo tirado e noite dormida! )
Obrigado Willy. Ótimo 2008
ps: Dá uma olhada se as observações dos códigos de final de linha que acrescentei além das suas estão corretas. Abraço.

Tentando compilar esse programa e apresenta erros que não consigo identificar onde estão!

[code] // Fig. 2.15: Comparison.java
// Compare inteiros utilizando instruções if, operadores relacionais
// e operadores de igualdade.
import Java.util.Scanner ; // programa utiliza a classe Scanner

public class Comparison
{
// método principal inicia a execução do aplicativo Java
public static void main ( String args[] )
{
// cria Scanner para obter entrada a partir da janela de comando
Scanner input = new Scanner ( System.in ) ;

     int number1 ; // primeiro número a comparar
     int number2 ; // segundo número a comparar

     System.out.print ( "Enter first integer: " ) ; // prompt
     number1 = input.nextInt() ; // lê o primeiro número fornecido pelo usuário

     System.out.print ( "Enter second integer: " ) ; // prompt
     number2 = input.nextInt() ; // lê o segundo número fornecido pelo usuário

     if ( number1 == number2 )
     System.out.printf ( "%d == %d\n", number1, number2 ) ;

     if ( number1 != number2 )
     System.out.printf ( "%d != %d\n", number1, number2 ) ;

     if ( number1 < number2 )
     System.out.printf ( "%d < %d\n", number1, number2 ) ;

     if ( number1 > number2 )
     System.out.printf ( "%d > %d\n", number1, number2 ) ;

     if ( number1 <= number2 )
     System.out.printf ( "%d <= %d\n", number1, number2 ) ;

     if ( number1 >= number2 )
     System.out.printf ( "%d >= %d\n", number1, number2 ) ;

  }  // fim do método principal

} // fim da classe Comparison [/code]

Erros:

  1. Comparison.Java:4: package Java. util does not exist

2 . Comparison.Java:12: Cannot find symbol

  1. Comparison.Java:12: Cannot find symbol

Será que estou com problemas na config de variáveis de novo?!
Vlw.

O erro está na linha 4: import java.util.Scanner; O java é com “j” minusculo e você colocou com maiusculo. Os demais erros estäo relacionados a esse.

[quote=Danúzio Oliveira] Tentando compilar esse programa e apresenta erros que não consigo identificar onde estão!

[code] // Fig. 2.15: Comparison.java
// Compare inteiros utilizando instruções if, operadores relacionais
// e operadores de igualdade.
import Java.util.Scanner ; // programa utiliza a classe Scanner

public class Comparison
{
// método principal inicia a execução do aplicativo Java
public static void main ( String args[] )
{
// cria Scanner para obter entrada a partir da janela de comando
Scanner input = new Scanner ( System.in ) ;

     int number1 ; // primeiro número a comparar
     int number2 ; // segundo número a comparar

     System.out.print ( "Enter first integer: " ) ; // prompt
     number1 = input.nextInt() ; // lê o primeiro número fornecido pelo usuário

     System.out.print ( "Enter second integer: " ) ; // prompt
     number2 = input.nextInt() ; // lê o segundo número fornecido pelo usuário

     if ( number1 == number2 )
     System.out.printf ( "%d == %d\n", number1, number2 ) ;

     if ( number1 != number2 )
     System.out.printf ( "%d != %d\n", number1, number2 ) ;

     if ( number1 < number2 )
     System.out.printf ( "%d < %d\n", number1, number2 ) ;

     if ( number1 > number2 )
     System.out.printf ( "%d > %d\n", number1, number2 ) ;

     if ( number1 <= number2 )
     System.out.printf ( "%d <= %d\n", number1, number2 ) ;

     if ( number1 >= number2 )
     System.out.printf ( "%d >= %d\n", number1, number2 ) ;

  }  // fim do método principal

} // fim da classe Comparison [/code]

Erros:

  1. Comparison.Java:4: package Java. util does not exist

2 . Comparison.Java:12: Cannot find symbol

  1. Comparison.Java:12: Cannot find symbol

Será que estou com problemas na config de variáveis de novo?!
Vlw.[/quote]

[quote]O erro está na linha 4: import java.util.Scanner; O java é com “j” minusculo e você colocou com maiusculo. Os demais erros estäo relacionados a esse.
[/quote]

É vero Alexander!!!Vlw.

Alguém poderia me ajudar com esse código:

import java.util.Scanner;

public class Addition
{
public static void main(String args[])
{
Scanner input = new Scanner(System.in);

	int number1;
	int number2;
	int sum;
	
	System.out.print("Enter first number: ");
	number1 = input.nextint();
	
	System.out.print("Enter secund number: ");
	number2 = input.nextint();
			
	sum = number1 + number2;
	
	System.out.printf("Sum is %d\n",sum);
}

}
number1 = input.nextint();

Addition.java:14: cannot find symbol
symbol : method nextint()
location: class java.util.Scanner
number1 = input.nextint();
^
Addition.java:17: cannot find symbol
symbol : method nextint()
location: class java.util.Scanner
number2 = input.nextint();
^
2 errors

Desde já agradeço.