Problema com algoritmo no Java

17 respostas
Galego_Henrique

E aí galera, tudo bem? É o seguinte, estou precisando da ajuda de vocês, fiz um algoritmo, até então tudo bem, não parece ter erro algum, só que ele na linha em destaque acusa um erro, tem como você olharem o que pode ser? Já tive muita dor de cabeça e não consegui descobri sozinho por isso partir para a ajuda. Obrigado desde já.

import javax.swing.JOptionPane;
public class exe04 {

public static void main (String [] args)

{

int idade,i,contM,contF,somaIdade;

String sexo,m,f;

double media,mediaM,mediaH;
while (i<4)
	{
		idade=Integer.parseInt(JOptionPane.showInputDialog("Digite sua idade: "));
		sexo=JOptionPane.showInputDialog("Digite seu sexo: ");

		if (sexo==m)
		contM++;

		if (sexo==f)
		contF++;
	somaIdade=somaIdade+idade;
	i++;
    };
media=somaIdade/i;
}

  JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media); [color=green] Aqui está o persistente erro, não sei o que é, sei que essa linha está me dando dores de cabeça,rsrs.[/color]

}

17 Respostas

F

edite e poste dentro do “code” pra melhor visualização do codigo, assim fica dificil.

Andre_Rosa

Galego Henrique:
E aí galera, tudo bem? É o seguinte, estou precisando da ajuda de vocês, fiz um algoritmo, até então tudo bem, não parece ter erro algum, só que ele na linha em destaque acusa um erro, tem como você olharem o que pode ser? Já tive muita dor de cabeça e não consegui descobri sozinho por isso partir para a ajuda. Obrigado desde já.

import javax.swing.JOptionPane;
public class exe04 {

public static void main (String [] args)

{

int idade,i,contM,contF,somaIdade;

String sexo,m,f;

double media,mediaM,mediaH;
while (i<4)
	{
		idade=Integer.parseInt(JOptionPane.showInputDialog("Digite sua idade: "));
		sexo=JOptionPane.showInputDialog("Digite seu sexo: ");

		if (sexo==m)
		contM++;

		if (sexo==f)
		contF++;
	somaIdade=somaIdade+idade;
	i++;
    };
media=somaIdade/i;
}

  JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media); [color=green] Aqui está o persistente erro, não sei o que é, sei que essa linha está me dando dores de cabeça,rsrs.[/color]

}</blockquote>

O seu código compila? De que mensagem de erro você está falando? É o compilador que a emite? Poste-a.
E coloque o seu código entre as TAGs [code] [/code].

drsmachado
Galego Henrique:
E aí galera, tudo bem? É o seguinte, estou precisando da ajuda de vocês, fiz um algoritmo, até então tudo bem, não parece ter erro algum, só que ele na linha em destaque acusa um erro, tem como você olharem o que pode ser? Já tive muita dor de cabeça e não consegui descobri sozinho por isso partir para a ajuda. Obrigado desde já.
import javax.swing.JOptionPane;
public class exe04 {

   public static void main (String [] args)
   {
   	int idade,i,contM,contF,somaIdade;
   	String sexo,m,f;
   	double media,mediaM,mediaH;

   	while (i<4)
   		{
   			idade=Integer.parseInt(JOptionPane.showInputDialog("Digite sua idade: "));
   			sexo=JOptionPane.showInputDialog("Digite seu sexo: ");

   			if (sexo==m)
   			contM++;

   			if (sexo==f)
   			contF++;
   		somaIdade=somaIdade+idade;
   		i++;
   	    };
   	media=somaIdade/i;
   }
[b]  JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);[/b] [color=green] Aqui está o persistente erro, não sei o que é, sei que essa linha está me dando dores de cabeça,rsrs.[/color] 
}

Perceba que você colocou o JOptionPane fora do método main...

F

E depois de colocar o JOptionPane dentro do método main, vc terá que inicializar as variáveis (antes do while), por exemplo:

i=0; 
        m = "M";
        contM = 0;
        contF = 0;
        f = "F";
        somaIdade = 0;
Galego_Henrique

André o erro é este aqui:

--------------------Configuration: --------------------

C:\Meus Documentos\INESC\Programação\Programação - Java\Exercícios\Java\Folha 3\exe04(erro).java:25:  expected

JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);

^

C:\Meus Documentos\INESC\Programação\Programação - Java\Exercícios\Java\Folha 3\exe04(erro).java:25: illegal start of type

JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);

^

C:\Meus Documentos\INESC\Programação\Programação - Java\Exercícios\Java\Folha 3\exe04(erro).java:25: illegal start of type

JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);

^

C:\Meus Documentos\INESC\Programação\Programação - Java\Exercícios\Java\Folha 3\exe04(erro).java:25: ) expected

JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);

^

C:\Meus Documentos\INESC\Programação\Programação - Java\Exercícios\Java\Folha 3\exe04(erro).java:25: ; expected

JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);

^

C:\Meus Documentos\INESC\Programação\Programação - Java\Exercícios\Java\Folha 3\exe04(erro).java:25: illegal start of type

JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);

^

C:\Meus Documentos\INESC\Programação\Programação - Java\Exercícios\Java\Folha 3\exe04(erro).java:25:  expected

JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);

^

C:\Meus Documentos\INESC\Programação\Programação - Java\Exercícios\Java\Folha 3\exe04(erro).java:25: ; expected

JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);

^

C:\Meus Documentos\INESC\Programação\Programação - Java\Exercícios\Java\Folha 3\exe04(erro).java:26: reached end of file while parsing

}

Process completed.
Galego_Henrique

fpolis:
E depois de colocar o JOptionPane dentro do método main, vc terá que inicializar as variáveis (antes do while), por exemplo:

i=0; m = "M"; contM = 0; contF = 0; f = "F"; somaIdade = 0;

Cara, o problema não é com inicialização de variável.

F

Vc já colocou o JOptionPane dentro do método main?

Galego_Henrique

Desculpe, não estou o vendo fora, pode especificar. Você fala o import javax…?

drsmachado
import javax.swing.JOptionPane;   
public class exe04 {   
  
   public static void main (String [] args)   
   {   
    int idade,i,contM,contF,somaIdade;   
    String sexo,m,f;   
    double media,mediaM,mediaH;   
  
    while (i<4)   
        {   
            idade=Integer.parseInt(JOptionPane.showInputDialog("Digite sua idade: "));   
            sexo=JOptionPane.showInputDialog("Digite seu sexo: ");   
  
            if (sexo==m)   
            contM++;   
  
            if (sexo==f)   
            contF++;   
        somaIdade=somaIdade+idade;   
        i++;   
        };   
    media=somaIdade/i;   
   }   

/*AQUI ESTÁ FORA*/
JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);[/b] [color=green] Aqui está o persistente erro, não sei o que é, sei que essa linha está me dando dores de cabeça,rsrs.[/color]   
}
import javax.swing.JOptionPane;   
public class exe04 {   
  
   public static void main (String [] args)   
   {   
    int idade,i,contM,contF,somaIdade;   
    String sexo,m,f;   
    double media,mediaM,mediaH;   
  
    while (i<4)   
        {   
            idade=Integer.parseInt(JOptionPane.showInputDialog("Digite sua idade: "));   
            sexo=JOptionPane.showInputDialog("Digite seu sexo: ");   
  
            if (sexo==m)   
            contM++;   
  
            if (sexo==f)   
            contF++;   
        somaIdade=somaIdade+idade;   
        i++;   
        };   
    media=somaIdade/i;   
/*AQUI ESTÁ DENTRO*/
JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);
   }    
}
F

Essa linha aqui

JOptionPane.showMessageDialog(null, "A média de idade do grupo é: "+media);

está fora do método main.

Você deve colocá-la antes de fechar a chave }

drsmachado

Outra coisa

public class exe04 {

Classe Em Java Se Escreve Com A Primeira Letra Maiúscula

public class Exe04 {

Não vai deixar de funcionar, mas boas práticas, são boas práticas.

ViniGodoy
Dica. Esse problema seria BEM MAIS VISÍVEL se você fizesse a indentação corretamente:
import javax.swing.JOptionPane;   
public class exe04 
{   
    public static void main (String [] args) 
    {   
        int idade,i,contM,contF,somaIdade;   
        String sexo,m,f;   
        double media,mediaM,mediaH;   
  
        while (i&lt;4)   
        {   
            idade=Integer.parseInt(JOptionPane.showInputDialog(&quot;Digite sua idade: &quot;));   
            sexo=JOptionPane.showInputDialog(&quot;Digite seu sexo: &quot;);   
  
            if (sexo==m)   
                contM++;   
  
            if (sexo==f)   
                contF++;   
            somaIdade=somaIdade+idade;   
            i++;   
        };   
        media=somaIdade/i;   
    }    
    //Veja como agora está claro que está no local errado
    JOptionPane.showMessageDialog(null, &quot;A média de idade do grupo é: &quot;+media);
}
E agora compare com o código correto:
import javax.swing.JOptionPane;   
public class exe04 
{   
    public static void main (String [] args) 
    {   
        int idade,i,contM,contF,somaIdade;   
        String sexo,m,f;   
        double media,mediaM,mediaH;   
  
        while (i&lt;4)   
        {   
            idade=Integer.parseInt(JOptionPane.showInputDialog(&quot;Digite sua idade: &quot;));   
            sexo=JOptionPane.showInputDialog(&quot;Digite seu sexo: &quot;);   
  
            if (sexo==m)   
                contM++;   
  
            if (sexo==f)   
                contF++;   
            somaIdade=somaIdade+idade;   
            i++;   
        };   
        media=somaIdade/i;   
        JOptionPane.showMessageDialog(null, &quot;A média de idade do grupo é: &quot;+media);
    }    
}

Não boicote a si mesmo.
Indentar corretamente é o primeiro passo para se tornar um bom programador.

Galego_Henrique

Cara, perdão, estava boiando aqui, sim, agora coloquei dentro do método main. Agora está aparecendo outro erro, mas dei conta de resolver.

ViniGodoy

PS. Apesar de seu código estar em Java, ele parece ter sido escrito por um programador C.

Veja como um programador Java escreveria:

import javax.swing.JOptionPane;   
public class Exe04 {   //Nome da classe com letras maiúsculas e chaves na mesma linha 
    public static void main (String [] args)  {   
        int cont = 0; //Declaração de variáveis no momento que for usa-las.
        int contM = 0;
        int contF = 0;
   
        while (cont &lt; 0) {             
            int idade=Integer.parseInt(JOptionPane.showInputDialog(&quot;Digite sua idade: &quot;));   
            String sexo=JOptionPane.showInputDialog(&quot;Digite seu sexo: &quot;);   
  
            //Comparação de Strings usando equals ou equalsIgnoreCase
            if (sexo.equalsIgnoreCase(&quot;M&quot;)) { //Sempre usar chaves
                contM++;   
            }            
            else if (sexo.equalsIgnoreCase(&quot;F&quot;)) {
                contF++;
            }
            somaIdade += idade;   
        };   
        //Cuidado com a divisão. Se os dois lados da divisão forem inteiros, o resultado será inteiro.
        //Converta um deles para double para obter um resultado com casas decimais não zeradas.
        double media=somaIdade/(double)cont;
        //Use o String.format para formatar a saída. Isso evita que o double seja exibido como notação científica
        JOptionPane.showMessageDialog(null, String.format(&quot;A média de idade do grupo é: %.2f&quot;, media));
        JOptionPane.showMessageDialog(null, String.format(&quot;Homens: %d, mulheres: %d&quot;, contM, contF));
    }
}
Galego_Henrique
ViniGodoy:
PS. Apesar de seu código estar em Java, ele parece ter sido escrito por um programador C.

Veja como um programador Java escreveria:

import javax.swing.JOptionPane;   
public class Exe04 {   //Nome da classe com letras maiúsculas e chaves na mesma linha 
    public static void main (String [] args)  {   
        int cont = 0; //Declaração de variáveis no momento que for usa-las.
        int contM = 0;
        int contF = 0;
   
        while (cont &lt; 0) {             
            int idade=Integer.parseInt(JOptionPane.showInputDialog(&quot;Digite sua idade: &quot;));   
            String sexo=JOptionPane.showInputDialog(&quot;Digite seu sexo: &quot;);   
  
            //Comparação de Strings usando equals ou equalsIgnoreCase
            if (sexo.equalsIgnoreCase(&quot;M&quot;)) { //Sempre usar chaves
                contM++;   
            }            
            else if (sexo.equalsIgnoreCase(&quot;F&quot;)) {
                contF++;
            }
            somaIdade += idade;   
        };   
        //Cuidado com a divisão. Se os dois lados da divisão forem inteiros, o resultado será inteiro.
        //Converta um deles para double para obter um resultado com casas decimais não zeradas.
        double media=somaIdade/(double)cont;
        //Use o String.format para formatar a saída. Isso evita que o double seja exibido como notação científica
        JOptionPane.showMessageDialog(null, String.format(&quot;A média de idade do grupo é: %.2f&quot;, media));
        JOptionPane.showMessageDialog(null, String.format(&quot;Homens: %d, mulheres: %d&quot;, contM, contF));
    }
}

Eu estudava em C, mas o que tem disso no código?

ViniGodoy

Por favor, não banalize as tags no título. Use-as para prover informação adicional importante, como a que seu tópico está [Resolvido] ou que você resolveu usar uma tecnologia diferente, como [PHP].
Mas escrever [Ajuda] não tem qualquer serventia, já que pedidos de ajuda representam 99% de nossos tópicos por aqui.

ViniGodoy

Primeiro, o Java tem um conjunto de convenções de código pré-estabelecidas, formal, que todos os programadores seguem:
http://www.oracle.com/technetwork/java/codeconv-138413.html

Segundo, é desejável reduzir escopo de variáveis para evitar erros (você só não faz isso em C pq não é possível, mas essa recomendação vale para C++).

Criado 30 de setembro de 2011
Ultima resposta 30 de set. de 2011
Respostas 17
Participantes 6