Ardunio is not accepting integers bigger than 9

any one know why the servo is not running when i sent he numbers through serial ?
when i used numbers less than 10 it works

#include <Servo.h>

Servo myservo;

void setup() {
  myservo.attach(9); //analog pin 0

  Serial.begin(9600);
  myservo.write(90);
  myservo.detach();
}


void loop() { 
 int ch = Serial.read();
   switch(ch) {

      case '10':
        myservo.write(10);
        break;
      case '20':
        myservo.write(20);
        break;
       case '30':
        myservo.write(30);
        break;
  }
  }

This only receives 1 character
int ch = Serial.read();

See asciitable.com

maybe change cases to:
case 'a':

case 'b':

case 'c':

Or, read in 2 digits:

void loop(){
if (Serial.available()>1){ // 2 characters came in?
digit1 = Serial.read() - 48; // read & convert to decimal, '0' to '9' expected
digit2 = Serial.read() - 48;
total = (digit1 *10) + digit2; // maybe swap these 2, result is 0 to 99
switch(total){
case 0:
:
break;
:
:
case 99:
:
: 
break;
} // end switch
} // end serial checl
} // end loop

Not again. This topic only comes up about 8 times a day. Clearly, you've done NO searching.

CrossRoads:
This only receives 1 character
int ch = Serial.read();

See asciitable.com

maybe change cases to:
case 'a':

case 'b':

case 'c':

Or, read in 2 digits:

void loop(){

if (Serial.available()>1){ // 2 characters came in?
digit1 = Serial.read() - 48; // read & convert to decimal, '0' to '9' expected
digit2 = Serial.read() - 48;
total = (digit1 *10) + digit2; // maybe swap these 2, result is 0 to 99
switch(total){
case 0:
:
break;
:
:
case 99:
:
:
break;
} // end switch
} // end serial checl
} // end loop

thanks bro that was so helpfull