For inside a Java Switch

Asked

Viewed 697 times

2

Good night, I wonder if there is a way to declare a 'FOR' within a SWITCH CASE in Java because Netbeans is making an error right here. I’m trying to make an application to perform a guessing game just like I read on the site

http://www.vivendoentresimbolos.com/2012/07/o-truque-da-adivinhacao-egipcia.html

I’m going to post the entire code for evaluation by the most experienced. I would like opinions on the operation as a whole should they find any fault.

package advinhacao;

import java.util.Scanner;

/**
 * By Lucas Menchone
 */
public class Advinhacao {

public static void main(String[] args) {

    boolean fim;
    String resposta;
    int numero,
        i,
        caso,
        resultado;

    resultado = 0;
    numero = 1;
    i = 1;
    fim = false;

    System.out.printf("Jogo da advinhação\n pense em um número entre 10 a 100. \n"
            + "O computador irá perguntar várias vezes se seu numero é par ou impar.\n"
            + "A cada vez que for impar, mentalmente subtraia uma unidade do numero e depois divida-o por 2\n"
            + "A cada vez que for par, divida mentalmente o numero por 2\n"
            + "O jogo termina quando o resultado final das suas contas for 1");

    while (fim == false) {
        int soma[] = new int[i];
        Scanner entrada = new Scanner(System.in);
        System.out.println("O numero é impar ? digite 1 se sim, 2 se n ou 3 se o valor final resultou 1");
        resposta = entrada.nextLine();
        caso = Integer.parseInt(resposta);
        switch (caso) {
            case 1:
                numero -= 1;
                numero /= 2;
                soma[i] = numero;
                i++;
                break;

            case 2:
                numero /= 2;
                break;

            case 3:
                for (i !== 0, i-- ) //NESTE 'FOR' ESTA DANDO "';' EXPECTED" e eu não tenho ideia de onde faltou ';' aqui ou se realmente eu estou fazendo algo q n posso
                { 
                    resultado += soma[i];
                }
                fim = true;
                System.out.println(resultado);
                break;
            default:
                System.out.println("opção não disponível, por favor selecione 1,2 ou 3");

        }

    }

}

}

  • 2

    Semantic error this. cloque o ; that solves.

  • but I have never seen put ';' in FOR, because it opens and closes with '{', so in this situation it is unlikely

  • As far as I know, in almost all languages, FOR follows this structure. " for (x=y;x<z;x++){." With ";". I don’t know if this "variation" with "," works in java. But I’m pretty sure it doesn’t.

1 answer

4


Like I said, it’s a semantic mistake in your for:

for(i !== 0, i-- )

It does not separate instructions inside the goes with a comma, but with ;:

  case 3:
    for (;i != 0; i-- )
     { 
          resultado += soma[i];
     }

That way you’re ignoring the iterator statement, since you started it off.

Maybe the while would fit better:

while(i != 0){
  resultado += soma[i];
  i--;
}
  • 1

    Really, doing this way I had no errors with respect to syntax, thank you

Browser other questions tagged

You are not signed in. Login or sign up in order to post.