Por que não funciona?

26 respostas
R

Estou criando um exercicio do DEITEL, mas o código que ele informa não está sendo executado:

import java.util.Scanner;
        
     public class Comparsion
     {
         public static void main ( String[] args){
             Scanner input = new Scanner (System.in);
                     
             int number1;
             int number2;
             
             System.out.print("Digite o primeiro numero:");
             number1 = input.nextInt();
             
             System.out.print("Digite o primeiro numero:");
             number2 = input.nextInt();
             
             If (number1 > number2);
                     System.out.printf ("%d > %d", number1, number2);
                                                
         }

    }

O erro ocorre quando calcula se o number1 é maior que o number2. Erro:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: If
	at Comparacao.main(Comparacao.java:17)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)

26 Respostas

Rodrigo_Sasaki

Que que é esse If maiúsculo aí ?

R

Ajustei, mas continua dando o mesmo erro!

E

if (number1 > number2){ System.out.printf ("%d > %d", number1, number2); }

tenta colocar o if com letra minuscula e retirar o ponto e virdula depois dos parenteses ( coloque o bloco todo entre chaves, assim fica mais tranquilo)

R

O mesmo erro!

Rodrigo_Sasaki

Se for exatamente o mesmo erro então você está fazendo algo errado. O primeiro erro acusa o If maiúsculo, portanto não deveria acusar o mesmo erro se você já resolveu.

R

erro atual:

run:
Digite o primeiro numero:20
Digite o primeiro numero:6
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: If
	at Comparacao.main(Comparacao.java:17)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)
Rodrigo_Sasaki

rafael.cs:
erro atual:

run: Digite o primeiro numero:20 Digite o primeiro numero:6 Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: If at Comparacao.main(Comparacao.java:17) Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)

Está usando alguma IDE? já tentou fazer um clean ou algo do tipo ?

R

Uso o netbeans…como eu faço um “clean”?

Rodrigo_Sasaki

Se eu não me engano ele tem alguma opção do tipo “Limpar e Construir”.

Não sei direito, não usei muito o NetBeans

E

testa em linha de comando :). Em linha de comando está rodando normal, deve ser algo com sua IDE :

Só uma duvida, essa classe foi renomeada ? por que o erro acusa o nome Comparacao;

R

eu dei um “limpar e construir projeto” e surgiu o erro:

Created dir: C:\Deitel\Comparacao\build
Updating property file: C:\Deitel\Comparacao\build\built-jar.properties
Created dir: C:\Deitel\Comparacao\build\classes
Created dir: C:\Deitel\Comparacao\build\empty
Created dir: C:\Deitel\Comparacao\build\generated-sources\ap-source-output
Compiling 2 source files to C:\Deitel\Comparacao\build\classes
C:\Deitel\Comparacao\src\Comparacao.java:17: error: ';' expected
             If (number1 > number2)
1 error
C:\Deitel\Comparacao\nbproject\build-impl.xml:915: The following error occurred while executing this line:
C:\Deitel\Comparacao\nbproject\build-impl.xml:268: Compile failed; see the compiler error output for details.
FALHA NA CONSTRUÇÃO (tempo total: 2 segundos)
Rodrigo_Sasaki
R

Mas na linha 17 não tem o ponto e vírgula…

Rodrigo_Sasaki

o “expected” é justamente porque ele está esperando um ponto e vírgula, mas não tem nada lá.

Quer postar seu código novamente? Tem certeza que está correto ?

ViniGodoy

Note que ele está acusando erro no arquivo Comparacao.java, e lá ainda tem um if maiúsculo.
Você provavelmente está corrigindo o erro do arquivo Comparsion.java.

Você não deveria ter excluído o outro arquivo do seu projeto?

Outra coisa, se a idéia era dar o nome em inglês, o termo é comparison, não comparsion.

R

Agora consegui com este código:

import java.util.Scanner;
        
     public class Comparacao
     {
         public static void main ( String[] args){
             Scanner input = new Scanner (System.in);
                     
             int number1;
             int number2;
             
             System.out.print("Digite o primeiro numero:");
             number1 = input.nextInt();
             
             System.out.print("Digite o primeiro numero:");
             number2 = input.nextInt();
             
             if (number1 > number2);
                     System.out.printf ("%d > %d", number1, number2);
             
         }
                 
                 
     }

Obrigado pessoal

Rodrigo_Sasaki

Disponha, mas você reparou que esse if aí é uma pegadinha, né ?

R

Sim, mas eu já havia feito o ajuste que você me falou (de colocar ele em minúsculo). O problema é que quando eu coloque a condição dele entre chaves (conforme a outra usuária pediu), o IF voltou a ficar errado, nessa parte deu confusão. Mas enfim, consegui executá-lo.

Obrigado pela paciência meu caro. :wink:

ViniGodoy

Antes que você tenha problemas. A maneira correta de ler do teclado é usando nextLine().

Ou seja, ao invés disso:

number1 = input.nextInt();

Use isso:

number1 = Integer.parseInt(input.nextLine());
Rodrigo_Sasaki

rafael.cs:
Sim, mas eu já havia feito o ajuste que você me falou (de colocar ele em minúsculo). O problema é que quando eu coloque a condição dele entre chaves (conforme a outra usuária pediu), o IF voltou a ficar errado, nessa parte deu confusão. Mas enfim, consegui executá-lo.

Obrigado pela paciência meu caro. ;)


Não é isso. O que eu quis dizer é que independente da condição nesse if, a mensagem abaixo será impressa. Pode colocar valores maiores pra um e pra outro e ver o que acontece.

R

[quote=ViniGodoy]Antes que você tenha problemas. A maneira correta de ler do teclado é usando nextLine().

Ou seja, ao invés disso:

number1 = input.nextInt();

Use isso:

number1 = Integer.parseInt(input.nextLine());

Olá,

Bom…eu estou me baseando pelo livro da Deitel, realmente não sabia desse detalhe.

Obrigado Vini

E

Este é o codigo que eu testei e funcionou normalmente :

import java.util.Scanner;  
          
     public class Comparsion
     {  
	 
         public static void main ( String[] args){  
             Scanner input = new Scanner (System.in);  
                       
             int number1;  
             int number2;  
               
             System.out.print("Digite o primeiro numero:");  
             number1 = input.nextInt();  
               
             System.out.print("Digite o primeiro numero:");  
             number2 = input.nextInt();  
               
             if (number1 > number2) {
                     System.out.printf ("%d > %d", number1, number2);  
                                  
				}  	
		 
		}
  
    }
Rodrigo_Sasaki
elizeldepaula:
Este é o codigo que eu testei e funcionou normalmente :
import java.util.Scanner;  
          
     public class Comparsion
     {  
	 
         public static void main ( String[] args){  
             Scanner input = new Scanner (System.in);  
                       
             int number1;  
             int number2;  
               
             System.out.print("Digite o primeiro numero:");  
             number1 = input.nextInt();  
               
             System.out.print("Digite o primeiro numero:");  
             number2 = input.nextInt();  
               
             if (number1 > number2) {
                     System.out.printf ("%d > %d", number1, number2);  
                                  
				}  	
		 
		}
  
    }
Seu if está diferente do do rafael.
E

eu alterei o if pra nao dar erro.

Rodrigo_Sasaki

O if dele não dá erro, aí que está a pegadinha.

E

É que eu alterei o if baseado naquele If do primero codigo.
Quanto ao erro , aparentemente parece que ele estava executando a classe Comparacao , invés da classe Comparsion que é a que ele tava alterando. Por isso o perguntei se a classe havia sido renomeada ou algo do tipo :slight_smile:

Criado 17 de dezembro de 2012
Ultima resposta 17 de dez. de 2012
Respostas 26
Participantes 4