C # разделить на переменные - PullRequest
0 голосов
/ 03 июня 2018

Так что дело в том, что я получаю данные через Bluetooth мобильное приложение в xamarin.На входе я получаю набор значений каждые 1000 миллисекунд.Например -44 -12 -1024 и я хочу, чтобы они были на моем экране, показанном с обновлениями.Но я получаю ошибку при разделении строки дохода на 3 переменные

              _myConnection.ThisSocket.InputStream.Read(read, 0, 1);
               _myConnection.ThisSocket.InputStream.Close();
                String DispString = ASCIIEncoding.Default.GetString(read);
                string newstring = DispString;    
                Device.BeginInvokeOnMainThread(() =>
                {
                    string[] CommString = newstring.Split(' ');
                    foreach (string var in CommString)
                    {
                        x = CommString[0];
                        y = CommString[1]; //exception is here (Out of range)
                        z = CommString[2];
                    }
                    int newx = (int)Convert.ToDouble(x);
                    int newy = (int)Convert.ToDouble(y);
                    int newz = (int)Convert.ToDouble(z);

                    JustLabel.Text = ("value is "+newx+" "+newy+" "+newz);

                });

1 Ответ

0 голосов
/ 03 июня 2018

Защитное программирование 101

Никогда не доверяйте кому-либо коду или данным, и определенно не доверяйте своим

Как исправить вашу проблему?

string[] CommString = newstring.Split(' ');

// Sanity Check
if(CommString.Length < 3)
{
   // oh no's!!!!

   // log
   // throw
   // writeline

   // somehow deal with it
}
else
{
   x = CommString[0];
   y = CommString[1]; 
   z = CommString[2];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...