Programa em Java.. DUvidas

Pessoal faço faculdade de sistemas de informação e estamos começando aprender java, so que esta dificil rs… Estou usando o programa JCreator…

Tenho um exercicio para fazer como vou passar a baixo seria o “Produto” …

[code]class Produto{
double valor;
int qnt;

double percentual()
{
	double r=0;
	if(valor<=10)
	{
	r=5;
	}
	
    if((valor>10)&&(valor<=100))
    {
 	r=10;
	}
	
	if(valor>100)
	{
	r=20;
	}
	return r;
}

int qnt()
{
return qnt;
}
void asValor(double pvalor)
{
valor=pvalor;
}
void asqnt(int pqnt)
{
qnt=pqnt;
}
double aumento()
{
if(valor<=500)
{
return 50;
}
else
{
return 60;
}
}

}
[/code]

E outro que não sei como chama-lo, mas é preciso fazer 2 separados né… o segundo seria o “UsaProduto”

[code]class UsaProduto
{
public static void main (String [] args)
{
double valor;
int qnt;

	Produto p = new Produto ();
	
	System.out.println("Valor" + p.asValor);
	System.out.println("Quantidade" + p.asqnt);		
	System.out.println("Percentual" + p.percentual);
	System.out.println("Aumento" + p.aumento);				
}

}
[/code]

Estou com problema neste segundo (UsaProduto) não sei corretamente como faze-lo ou o que esta faltando no meu…

Se alguem puder me ajudar e falar onde está o erro ou o que tem que fazer…
E como se chama o primeiro código que tenho que fazer e o segundo (Produto e UsaProduto) rs… Brigada desde já

lilian acho que seja assim :lol:

public static void main(String[] args) {
Produto produto = new Produto();
produto.asValor(2.6); // atribuindo um valor ao produto
produto.asqnt(5); // atribuindo um quantidade de produto
System.out.print(produto.aumento());
System.out.print(produto.percentual());

  }

T +

lilian acho que seja assim :lol:

public static void main(String[] args) {
	Produto produto = new Produto();
	produto.asValor(2.6); // atribuindo um valor ao produto
	produto.asqnt(5); // atribuindo um quantidade de produto
	System.out.print(produto.aumento());
	System.out.print(produto.percentual());

      }

T +

vanderlanio no caso ficaria assim?

[code]class UsaProduto
{
public static void main (String [] args)
{
double valor;
int qnt;

	Produto p = new Produto ();
	
    System.out.println("Valor" + p.asValor());
    	p.asValor(2.6); // atribuindo um valor ao produto
	System.out.println("Quantidade" + p.asqnt());		
		p.asqnt(5); // atribuindo um quantidade de produto
	System.out.println("Percentual" + p.percentual());
	System.out.println("Aumento" + p.aumento());				
}

}[/code]

So que esta dando erro em

 System.out.println("Valor" + p.asValor());

e em

	System.out.println("Quantidade" + p.asqnt());

Porque sera :frowning:

Brigada pela sua ajuda!!! :wink:

void asValor(double pvalor)
 {
 	valor=pvalor;
 }

void asqnt(int pqnt)
 {
 	qnt=pqnt;
 }

Vc está esperando retorno de dois métodos que estão não retornam nada (usam void), por isso o erro está ocorrendo.

Att.
Fernando.

Oi Lilian,

Embora não resolva o seu problema, uma dica:

Melhore o nome dos seus métodos! No java, o padrão que usamos para definir um valor é prefixar o método com set. E para pegar um valor, com get. Além disso, dificilmente usamos abreviaturas, a menos que elas sejam amplamente conhecidas.

Outra coisinha, atributos devem ser sempre declarados como private (exceto em raríssimos casos em que serão protected), métodos visíveis fora da classe como public.

Por exemplo, tua classe ficaria assim:

[code]
class Produto{
private double valor;
private int quantidade;

public double getPercentual() {
if(valor&lt=10)
return 5;

  if((valor&gt10)&&(valor&lt=100)) 
     return 10;

  return 20;

}

public int getQuantidade() {
return quantidade;
}

public void setValor(double valor) {
this.valor= valor;
}

public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}

public double getAumento() {
if(valor&lt=500)
return 50;

  return 60;

}
}[/code]

só mais um toque:

repare nas assinaturas dos métodos:

void asqnt(int pqnt) { qnt=pqnt; }

void asValor(double pvalor) { valor=pvalor; }

Agora olhe o que vc está fazendo:

p.asValor()
p.asqnt()

Vc não declarou nenhum método com a lista de argumentos vazia.A classe Produto só aceita chamadas desses dois (por enquanto) como void -> int e void -> double

Lilian , o matodo void asValor(double pvalor) não retorna nenhum valor, e voce tem que passar um argumento do tipo double para ele, logo a linha abaixo esta incorreta entao a retire do seu codigo:

System.out.println("Valor" + p.asValor());

o mesmo ocorre para o metodo void asqnt(int pqnt), so que ele espera um argumento do tipo int, entao retire tb a linha :

System.out.println("Quantidade" + p.asqnt());	

Agora deve funcionar :smiley:

E o código para usa-la ficaria assim (note que ficou mais legível):

[code]
class UsaProduto {
public static void main (String [] args) {
double valor;
int qnt;

  Produto p = new Produto ();
	
  System.out.println("Valor" + p.getValor());
  p.setValor(2.6); // atribuindo um valor ao produto
  System.out.println("Quantidade" + p.getQuantidade());	
  p.setQuantidade(5); // atribuindo um quantidade de produto
  System.out.println("Percentual" + p.getPercentual());
  System.out.println("Aumento" + p.getAumento());		 

}
}[/code]

Essa convenção de código é amplamente usada na comunidade Java e seria muito bom que você já fizesse certinho desde o início. :wink:

Lilian

Uma dica, para que você consiga fazer bem esses exercícios é importante pesquisar em livros, apostilas ou materiais disponíveis na net, primeiro os conceitos básicos da linguagem, sua sintaxe, orientação a objetos, etc, porque senão todos os exercícios que surgirem você terá muitas dúvidas.

Veja as modificações que fiz no seu código veja se entende:

Classe Produto:


class Produto{
 	double valor;
 	int qnt;
 /*inseri identificador publico em todos os métodos para que a classe UsaProduto possa acessá-los*/	
 public double percentual()
 	{
 		double r=0;
 		if(valor<=10)
 		{
 		r=5;
 		}
 		
         if((valor>10)&&(valor<=100))
         {
      	r=10;
 		}
 		
 		if(valor>100)
 		{
 		r=20;
 		}
 		return r;
 	}
 public int qnt()
 {
 	return qnt;
 }
/* para os métodos que você passa valores como parâmetros, inseri um tipo de retorno de acordo com o tipo passado nos parâmetros para que 
você consiga trabalhar com os valores através da classe UsaProduto, consequentemente inseri também um retorno para o método*/
  public double asValor(double pvalor)
 {
 	valor=pvalor;
	return valor;
 }
/* para os métodos que você passa valores como parâmetros, inseri um tipo de retorno de acordo com o tipo passado nos parâmetros para que 
você consiga trabalhar com os valores através da classe UsaProduto,
consequentemente inseri também um retorno para o método*/
 public int asqnt(int pqnt)
 {
 	qnt=pqnt;
	return qnt;
	
 }
 public double aumento()
 {
 	if(valor<=500)
 	{
 		return 50;
 	}
 	else
 	{
 		return 60;
 	}
 }
 
 }

Classe UsaProduto

class UsaProduto
 {
 	public static void main (String [] args)
 	{
 		
/*Retirei as variáveis de instância  pois não tinha necessidade de repetir aqui*/		
 		Produto p = new Produto ();

 		/*Atribui valores para os métodos que pediam parametros, e para os demais é necessário a escrita do métodos como ele é, mesmo que tenha que colocar paranteses vazios*/
 		System.out.println("Valor" + p.asValor(2.0));
 		System.out.println("Quantidade" + p.asqnt(3));		System.out.println("Percentual" + p.percentual());
 		System.out.println("Aumento" + p.aumento());				
 	}
 }

Eu faria dessa maneira, testei e deu certo, ok!!! :wink:

Valeu Fernando, errando e aprendendo né, agora ja aprendi mais um…

Dicas são sempre bem vindas Vini:smiley:
E concerteza vai me ajudar e muito do desenvolvimento dos exercícios

Entendi isis… Mais uma que vou tentar nao errar novamente…

vanderlanio brigada novamente, esta me ajudando muito!!!

Bah Patricia vc ja é minha idola haha…
As alterações que você fez deu certo e rodou sim Valeuuu :wink: