Issues with using serial.avaliable to start a loop

A tip for you:

                          //{a,b,c,d,e,f,g}
int seg_numbers [10][7] =  {{1,1,1,1,1,1,0}, //0
                            {0,1,1,0,0,0,0}, //1
                            {1,1,0,1,1,0,1}, //2
                            {1,1,1,1,0,0,1}, //3                                       
                            {0,1,1,0,0,1,1}, //4
                            {1,0,1,1,0,1,1}, //5
                            {1,0,1,1,1,1,1}, //6
                            {1,1,1,0,0,0,0}, //7
                            {1,1,1,1,1,1,1}, //8
                            {1,1,1,0,0,1,1}};//9

This uses 140 bytes of precious ram memory. It only needs to use 10 bytes!

                          //abcdefg
byte seg_numbers [10] =  {0b1111110, //0
                          0b0110000, //1
                          ...
                          ...
                          0b1110011};//9

To access the segment values, instead of "seg_numbers[d][s]" use "bitRead(seg_numbers[d], s)"