Prabodh
Prabodh

Reputation: 21

Error: break statement not within loop or switch

I wrote this part of code and a series of error are being shown. The above mentioned error being the first. What is wrong in the code?

void direction(char ch)
{

switch(ch)
case 'w': if(dirn!=3){dirn=1;}
          break;

case 'a': if(dirn!=2){dirn=4;}
          break;

case 's': if(dirn!=1){dirn=3;}
          break;

case 'd': if(dirn!=4){dirn=2;}
          break;

Upvotes: 0

Views: 3288

Answers (3)

RBT
RBT

Reputation: 25945

You can choose to omit the opening and closing braces for a switch statement only when you have only one case in your switch block as shown below:

void direction(char ch)
{
    switch(ch)
    case 'w': if(dirn!=3){dirn=1;}
}

But, if you have got multiple cases to deal with like in your case then you must enclose them inside a pair of opening and closing braces to create a code block for the switch statement as shown below:

void direction(char ch)
{

switch(ch)
{//opening brace for starting of statement block
    case 'w': if(dirn!=3){dirn=1;}
          break;

    case 'a': if(dirn!=2){dirn=4;}
          break;

    case 's': if(dirn!=1){dirn=3;}
          break;

case 'd': if(dirn!=4){dirn=2;}
          break;
}//closing brace for closing of statement block

So you will have to either remove all the cases but one OR add the pair of braces to create statement block. In all other cases your code won't compile successfully.

Upvotes: 1

Swift - Friday Pie
Swift - Friday Pie

Reputation: 14663

switch statement requires braces block, where all labels including default one should be:

switch(ch)
{
case 'w': if(dirn!=3) dirn=1;
          break;

case 'a': if(dirn!=2) dirn=4;
          break;

case 's': if(dirn!=1) dirn=3;
          break;

case 'd': if(dirn!=4) dirn=2;
          break;
default:
          break;
}

The statement after switch must be a compound statement to contain case, default and break. Break got a special meaning here, different from loops. If brace was omitted only next line after switch is part of its statement.

Upvotes: 0

csblo
csblo

Reputation: 1631

You have forgotten the switch braces :

void direction(char ch)
{

    switch(ch)
    {
        case 'w': if(dirn!=3){dirn=1;}
            break;

        case 'a': if(dirn!=2){dirn=4;}
            break;

        case 's': if(dirn!=1){dirn=3;}
            break;

        case 'd': if(dirn!=4){dirn=2;}
            break;
    }
}

Upvotes: 0

Related Questions