Ajuda com código (nova dúvida)

9 respostas
cleyvison

Caros amigos, comecei a fazer um trabalho pra facu e já na primeira classe encontrei dificuldades…

o código é o seguinte

public class NomeProduto
{
	String codProduto = "1" ;
	String nomeProduto;
		
	public String NomeProduto(String codProduto)
	{
				
		if (codProduto == "1")
		{
			nomeProduto = "balde Plastico";
		}
		return (nomeProduto);
		
	}
	public void main(String[] args) 
	{
		System.out.println (" "+ NomeProduto(nomeProduto));
	}
}

e presena o seginte erro

java.lang.NoSuchMethodError: main
Exception in thread "main"

alguemode me explicar como corrigir?

9 Respostas

T

a) Para comparar 2 strings use equals

b) public static void main

c) Você não definiu um construtor para a classe e sim um método com o mesmo nome da classe; isso não é proibido mas vai lhe dar muita cabeça. Por hora, faça de conta que isso é proibido. Um construtor não pode retornar nenhum valor e também não tem retorno “void”.

d) Um nome de classe legal seria “Produto”, não “NomeProduto”, que é apenas um atributo do produto.

cleyvison

alterei, ficou ssim…

so que agora õ aprece nem erro, nem o que devera aparecer na console

public class NomeProduto   
{   
    String codProduto = "1" ;   
    String nomeProduto;   
           
    public String Produto(String nomeProduto)   
    {   
        if ("1".equals(codProduto))   
        {   
            nomeProduto = "balde Plastico"; 
        } 
       
        return (nomeProduto);   
           
    }   
    public void main(String[] args)   
    {   
        System.out.println (" "+ Produto(nomeProduto));   
    }   
}

di uma pesquisada e plo que entendi para usa equals eu colocoo vlor a ser cmparado com a variavel que quero compar esta correto?

Henrique_Fernandes

veja so no seu codigo:

public String Produto(String nomeProduto)   // aki o parametro eh do nome e nao do codigo!
    {   
        if ("1".equals(codProduto))   
        {   
            nomeProduto = "balde Plastico"; 
        } 
       
        return (nomeProduto);   
           
    }

No caso para vc corrigir esse erro, vc deve colocar o parametro (String codProduto)

public String Produto(String codProduto) {
creio que no sua saida agora irá dar certo, e mais uma pra complementar: procure usar os seus atributos com o modificados private

private String nome;

private String codigo;

E outra nao esqueça de colocar public “static” void main sem as aspas!
Espero ter ajudado!

cleyvison

VLW…ago funcionou

cleyvison

pq não esta “aparecedo” a tela do programa?

Amigos topíco e velho mas a dúvida é nova

O codigo anterior faz parte deste programa, eu apenas alterei alguma coisas e t afuncionando legal…

agora to entando criar a “interface” do “bicho”, usei parametros paracidos em uma calculadorae funcionou, pq neste caso não esta fiuncionado?

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class PrincipalSisConCAd extends JFrame implements ActionListener
{
	JButton botao1 = new JButton ("Novo");// criando as variáveis "botões"
	JButton botao2 = new JButton ("Alterar");
	JButton botao3 = new JButton ("Salvar");
	JButton botao4 = new JButton ("Excluir");
	JButton botao5 = new JButton ("Imprimir");
	JButton botao6 = new JButton ("Fechar");
	
	String codPostoGraduacao; // esta variável sera enviada a outra classe
	String nomePostoGraduacao;// esta variável sera enviada a outra classe
	
	JTextField text = new JTextField(10);
	
	public PrincipalSisConCAd ()
	{
		super ("SisConCAd");
		setSize( 800,600);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new FlowLayout);// usei este comando em uma calculadora e deu certo aqui não esta dando
		JPanel painel = new JPanel();
		add (text);
		add (painel);
		
		painel.add(botao1);//mostrar boões
		painel.add(botao2);
		painel.add(botao3);
		painel.add(botao4);
		painel.add(botao5);
		painel.add(botao6);
		
		botao1.addActionListener (this);//faz botão "escrever"
		botao2.addActionListener (this);
		botao3.addActionListener (this);
		botao4.addActionListener (this);
		botao5.addActionListener (this);
		botao6.addActionListener(this);
		
		setVisible(true);
		
		
	}
	public static void main(String[] args) 
	{
		System.out.println ("teste");// isso não é nada e só pra saber se o programa ta rodando.
	}
	
	public void actionPerformed(ActionEvent evt)
	{
		Object acao = evt.getSource();
		
		if (acao == botao6)
		{
			System.exit(DISPOSE_ON_CLOSE);
			
		}
	}
}

ta rodado e não aparece nem erro e nem a tela ue deveria…

pf_poa
new PrincipalSisConCAd().setVisible(true);

tente isso no método main.

cleyvison

Funcionou mas, podera me expclar a “logica”

Thiago_Luis

Fala cara, blza?

Então, no método main, vc não chamou o construtor da classe PrincipalSisConCAd, então, não vai construir os componentes que vc declarou lá.
Na verdade, vc poderia fazer desse jeito

new PrincipalSisConCAd();

Pois daí, ia passar pelo construtor e consequentemente ia passar pelo método setVisible(true), que é o último código que tem dentro do seu método construtor.

Se vc não chamasse o contrutor em algum lugar, nunca ia criar os componentes do Swing.

Abraço

cleyvison

OBRIGADO, em breve novas dúvidas…

Criado 12 de junho de 2009
Ultima resposta 12 de jun. de 2009
Respostas 9
Participantes 5