Estou a fazer um programinha e imprima os multiplos de 7 menores de 200. O programa é compilado mas na hora da execução não tenho o resultado. Onde esotu a errar.
class Multiplos07
{
public static void main (String args[])
{
int cont;
int mult =0;
for (cont = 0; cont < 200; cont++);
{
if ((cont%7) ==0)
cont = cont + mult;
System.out.println("Os multiplos de 7 menores que 200 são: " + mult);
}
}
}
[quote=Lucas Chissola]Estou a fazer um programinha e imprima os multiplos de 7 menores de 200. O programa é compilado mas na hora da execução não tenho o resultado. Onde esotu a errar.
[/quote]
class Multiplos07
{
public static void main (String args[])
{
int cont;
int mult =0;
for (cont = 0; cont < 200; cont++);
{
if ((cont%7) ==0)
cont = cont + mult;
System.out.println("Os multiplos de 7 menores que 200 são: " + mult);
}
}
}
Existem problemas de semântica e lógica no seu codigo, embora ele esteja sintaticamente correto e compile sem problemas.
Um problema de semântica é o seguinte: o ponto e virgula depois do for faz com que a JVM não execute nenhuma operação durante o loop, apenas o incremento do contador. Assim, o bloco demarcado entre chaves (linhas 8 a 12) não é executado a cada iteração mas sim após a finalização das 200 iterações, o que não é o comportamento desejado. Remova este ponto e vírgula para resolver o problema.
O segundo problema de semântica é a ausência de marcação de bloco após seu if. Se não houver marcação, apenas a instrução imediatamente seguinte (a soma dos valores) será executada caso a expressão seja avaliada como true. Se você deseja que a saída também esteja atrelada ao condicional, demarque ambas instruções entre chaves.
O problema de lógica é que mesmo executando o bloco em todas as iterações, você estaria somando a variável “mult” ao contador, mas o valor desta variável é sempre zero. Além disso, você está usando esta mesma variável na saída do seu programa. Mesmo sem os problemas semânticos, você teria a frase “Os multiplos de 7 menores que 200 são: 0” escrita 200 vezes.
Uma possível solução seria:
public static void main (String args[]) {
int cont;
System.out.println("Os multiplos de 7 menores que 200 são: ");
for (cont = 0; cont < 200; cont++) {
if ((cont%7) ==0)
System.out.print(cont+ " ");
}
}
}
[]s
–mcbrain