Erro em java

17 respostas
H
Fiz um exercício sobre números primos, esta dando um erro, poderiam dar uma olhada
package Lista03;

	import javax.swing.JOptionPane;

public class exe09 {
	
	public static void main (String args[]){
		
		int n, cont, ndiv;
		
		String entrada;
		String saida;
		
		
	entrada = JOptionPane.showInputDialog ( " Escreva um número inteiro " );
	n = Integer.parseInt ( entrada );

	
	while (n<0){
		
		ndiv = 0;
		
	[color=darkred]for[/color] (cont=0;1>=n;cont++){
		
		resto = n % cont;  // O ERRO ACONTECE AQUI, NA PALAVRA RESTO
	
	if (ndiv <=2)
	{
		saida = " É primo " + n; 
		JOptionPane.showMessageDialog (null, saida);
	}
	else
	{
		saida = " Não é primo " + n; 
		JOptionPane.showMessageDialog (null, saida);
	}
	
	
	}}}}

17 Respostas

Guinter

Avariável “resto” não esta declarada.

H

Então, posso declarar como double, ai tenho que converter?

Guinter

Declara como double só isso, pra que converter?

J-Chist

O módulo de um número é sempre um número inteiro. Pelo que vi do seu código, você pode declarar resto como inteiro mesmo.

H

Agora ficou uma lâmpada com um !, lá em cima na variável resto que eu declarei.

Quando eu executo o programa pede para digitar um Nº, eu digito ai some.

J-Chist

A lâmpada com um ! (rss) é o checkstyle. Se você passar o mouse sobre ela, vai receber uma dica sobre como melhorar o código da sua aplicação. Se o programa some depois que você digita um número, você tem que analisar o código para ver o que está acontecendo de errado. Seu código faz exatamente o que você mandou ele fazer.
Procure analisar o erro antes de postar aqui, para que você aprenda a linguagem.

Dica: execute o programa em modo de depuração, para ver em que ponto a aplicação “some”.

H

A lâmpada com um ! (rss) é o checkstyle. Se você passar o mouse sobre ela, vai receber uma dica sobre como melhorar o código da sua aplicação. Se o programa some depois que você digita um número, você tem que analisar o código para ver o que está acontecendo de errado. Seu código faz exatamente o que você mandou ele fazer.

O erro é: The local variable resto is never read.

Tem alguma coisa errada no código?

J-Chist

Não é um erro, é um alerta. Se você traduzi-lo está dizendo assim:
“A variável local resto nunca é lida” . Aí você me responde: tem algo errado com seu código? (Dica: não pense em Java, pense no algoritmo que você está codificando).

H

J-Chist:
Não é um erro, é um alerta. Se você traduzi-lo está dizendo assim:
“A variável local resto nunca é lida” . Aí você me responde: tem algo errado com seu código?

A meu ver não tem erro.

J-Chist

Se não tem erro o programa já está pronto…rsssss. Por isso que não é legal que as pessoas já postem diretamente o problema do seu código e dêem uma solução, porque não te ajuda a aprender como analisar o código e detectar erros no algoritmo.

    • Repare a declaração do seu while. É isso mesmo que você deseja fazer?
    • Repare as variáveis resto e ndiv. É isso mesmo que você deseja fazer?
H

J-Chist:
Se não tem erro o programa já está pronto…rsssss. Por isso que não é legal que as pessoas já postem diretamente o problema do seu código e dêem uma solução, porque não te ajuda a aprender como analisar o código e detectar erros no algoritmo.

    • Repare a declaração do seu while. É isso mesmo que você deseja fazer?
    • Repare as variáveis resto e ndiv. É isso mesmo que você deseja fazer?

Eu olhei tudo aqui e, sinceramente, não achei nenhum erro.

J-Chist

Então tá tudo certo, uai, porque eu não sei qual algoritmo você quer implementar e se não dá erro de compilação não há erro de sintaxe Java.

H

Então tá tudo certo, uai.

Então por que não executa?

J-Chist

Executando está. E está fazendo exatamente o que você manda fazer.
Sugestão: esqueça o java. Pegue um papel, um lápis e faça o chinês desse algoritmo que você implementou. Pegue um número tipo 50, e vai escrevendo os valores de cada variável, aí você vai descobrir porque a execução não está fazendo o que (eu acho) você quer que faça. Agora eu vou almoçar, volto às 13h.

Polimorphism

O seu for ta bem estranho… A condição nem sequer está ligada ao contador.

H

J-Chist:
Executando está. E está fazendo exatamente o que você manda fazer.
Sugestão: esqueça o java. Pegue um papel, um lápis e faça o chinês desse algoritmo que você implementou. Pegue um número tipo 50, e vai escrevendo os valores de cada variável, aí você vai descobrir porque a execução não está fazendo o que (eu acho) você quer que faça. Agora eu vou almoçar, volto às 13h.

valeu pelas dicas, vou fazer isso.

J-Chist

O for eu nem tinha reparado, só o while que também está estranho, assim como as referências às variáveis resto e ndiv. Por isso estou sugerindo ao nosso amigo autor do tópico que esqueça a linguagem e pense no algoritmo.

Criado 5 de outubro de 2009
Ultima resposta 5 de out. de 2009
Respostas 17
Participantes 4