Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael Felippe

Um erro bem simples de se resolver, problema é que não entendo pq esta

Recommended Posts

Olá Pessoal... Estou com um problema no código abaixo. O programa compila sem problemas, porém na hora que mando executar é emitida uma mensagem dizendo: Exception in thread "main" java.lan.ArithmeticException: / by zero Sei que é um erro bobo, mas não consigo entender o pq de acusar este problema, pois como podem ver, apesar da variavel i comecar em 0, no momento que ela vai ser utilziada na divisao eu mando incrementá-la, com isso ela deveria passar a valer 1, e este erro não poderia ser apresentado , mas parece que não é isso que esta ocorrendo. Alguém pode me explicar o motivo ? Por favor... OBS.: Estou trabalhando no modo console...class programa01{ public static void main(String args[]) { float a=0;int n,i; n=Integer.parseInt(args[0]); for (i=0;i<=n;i++) { if (i%2==0) { a=a+((n-i)/(i++)); // Acredito que o erro aconteça nesta linha....mas pq ? i--; } else { a=a-((n-i)/(i++)); i--; } } System.out.println("Valor de A= " +a); } } Walew...abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal... Estou com um problema no código abaixo. O programa compila sem problemas, porém na hora que mando executar é emitida uma mensagem dizendo: Exception in thread "main" java.lan.ArithmeticException: / by zero Sei que é um erro bobo, mas não consigo entender o pq de acusar este problema, pois como podem ver, apesar da variavel i comecar em 0, no momento que ela vai ser utilziada na divisao eu mando incrementá-la, com isso ela deveria passar a valer 1, e este erro não poderia ser apresentado , mas parece que não é isso que esta ocorrendo. Alguém pode me explicar o motivo ? Por favor... OBS.: Estou trabalhando no modo console...class programa01{ public static void main(String args[]) { float a=0;int n,i; n=Integer.parseInt(args[0]); for (i=0;i<=n;i++) { if (i%2==0) { a=a+((n-i)/(i++)); // Acredito que o erro aconteça nesta linha....mas pq ? i--; } else { a=a-((n-i)/(i++)); i--; } } System.out.println("Valor de A= " +a); } } Walew...abraços...

Bem, consegui resolver o problema.....vou postar aki para caso alguem passe pelo mesmo problema....realmente o erro acontecia no momento de incrementar a variavel i.... Eu estava utilizando i++, quando o correto seria ++i. A diferença entre eles é que no i++ a valor da variavel é retornado para depois ser incrementada....ja no ++i o valor é incrementado para depois ser retornado....Como eu estava usando i++ e o valor de i começava em 0, entao edle retornava o 0 para a divisao, o que causava erro....foi so alterar para ++i que ficou resolvido.... Para o programa funcionar perfeitamente , tb deve-se alterar no codigo acima o tipo das variaveis n e i, pois estao como int, quando o ideal é float....So estes pequenos detalhes, mas q fazem grande diferença...rsrs.... Espero que possa ajudar alguem...abracos..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.