Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чтения чисел с типом double

37K
24 сентября 2010 года
Subaro
14 / / 07.03.2009
 
Код:
StreamReader sr = new StreamReader("d:\\matrix.txt");
double[,] A = new double[n, n];
           
for (int i = 0; i < n; i++)
   for (int j = 0; j < n; j++)
       A[i, j] = sr.Read();

В Файле находятся вещественные числа, при считывании их в матрицу А, происходит не то что надо. Вместо того чтобы записать 9.2 записывается 56.
В чём тут подвох?
63K
24 сентября 2010 года
Motorcode
11 / / 22.09.2010
Подвох в том, что вы выполняете посимвольное чтение.
2.1K
24 сентября 2010 года
Norgat
452 / / 12.08.2009
Цитата: Subaro
 
Код:
StreamReader sr = new StreamReader("d:\\matrix.txt");
double[,] A = new double[n, n];
           
for (int i = 0; i < n; i++)
   for (int j = 0; j < n; j++)
       A[i, j] = sr.Read();

В Файле находятся вещественные числа, при считывании их в матрицу А, происходит не то что надо. Вместо того чтобы записать 9.2 записывается 56.
В чём тут подвох?



выше уже написали - ты читаешь посимвольно.

и ещё... нужно использовать using(...){...}.

ну как то так можно считать матрицу 3x3 из файла:

Код:
var matr = new double[3, 3];
          using (var sr = new StreamReader(path))
            {
                string[] buf;
                for (int i = 0; i < 3; i++)
                {
                    buf = sr.ReadLine().Split(' ');
                    for (int j = 0; j < 3; j++)
                    {
                        matr[i, j] = double.Parse(buf[j]);
                    }
                }
            }
1.8K
24 сентября 2010 года
LM(AL/M)
332 / / 20.12.2005
Цитата: Norgat

и ещё... нужно использовать using(...){...}.


считаю что использование using не принципиально для такой прожки, можете привести веский мотив?

2.1K
24 сентября 2010 года
Norgat
452 / / 12.08.2009
Цитата: LM(AL/M)
считаю что использование using не принципиально для такой прожки, можете привести веский мотив?



для этой - нет.

но часто нужно считать данные из файла в начале работы, а потом переписать этот файл заново или дописать что-то туда, а using эквивалентно следующей конструкции(взято с MSDN):


 
Код:
Font font1 = new Font("Arial", 10.0f);
  try
  {
    byte charset = font1.GdiCharSet;
  }
  finally
  {
    if (font1 != null)
      ((IDisposable)font1).Dispose();
  }


т.е. это гарантия вызова Dispose(), что для файла равносильно вызову Close(), который, кстати, всего лишь вызывает внутри себя Dispose - что гарантирует освобождение файлового дескриптора.

имхо, лучше сразу приучить себя к правильному стилю(благо тут всего 3 строчки, которые в VS набираются: using-Tab-Tab-*ввод кода для открытия файла*-Enter), чем потом заставлять себя использовать using(иногда же просто на автомате пишешь так, как привык, а не так, как правильно).
1.8K
24 сентября 2010 года
LM(AL/M)
332 / / 20.12.2005
Цитата: Norgat

имхо, лучше сразу приучить себя к правильному стилю(благо тут всего 3 строчки, которые в VS набираются: using-Tab-Tab-*ввод кода для открытия файла*-Enter), чем потом заставлять себя использовать using(иногда же просто на автомате пишешь так, как привык, а не так, как правильно).


я потому и спросил, что вы привели пример как раз плохого стиля

2.1K
24 сентября 2010 года
Norgat
452 / / 12.08.2009
Цитата: LM(AL/M)
я потому и спросил, что вы привели пример как раз плохого стиля



а можно подробней, почему?

1.8K
24 сентября 2010 года
LM(AL/M)
332 / / 20.12.2005
да просто потому что в этом примере using абсолютно ни к чему, но так как вы не пояснили зачем и почему оно там нужно снабдив при этом словами
Цитата: Norgat
и ещё... нужно использовать using(...){...}.

, у кого-то может сложиться впечатление что использование этой конструкции обязательно всегда и везде, а это как раз не так и в большинстве случаев будет плохим стилем

и П.С. по поводу ваших последующих разъяснений: во-первых не понятно все-таки как из потребности

Цитата: Norgat
считать данные из файла в начале работы, а потом переписать этот файл заново или дописать что-то туда

вытекает необходимость использования using и не понятно чем это лучше простого Close()

2.1K
24 сентября 2010 года
Norgat
452 / / 12.08.2009
Цитата: LM(AL/M)

и П.С. по поводу ваших последующих разъяснений: во-первых не понятно все-таки как из потребности вытекает необходимость использования using и не понятно чем это лучше простого Close()



лучше тем, что при возникновении эксепшена во время чтения данных из файла его файловый дескриптор(файла) будет освобождён в любом случае(не зависимо от того продолжит ли программа свою работу или же нет).

Цитата:
, у кого-то может сложиться впечатление что использование этой конструкции обязательно всегда и везде, а это как раз не так и в большинстве случаев будет плохим стилем



угу, а по вашему в Эндрю Троелсена просто так в каждом примере с открытием файла на чтение используется using?

Цитата:
вытекает необходимость использования using и не понятно чем это лучше простого Close()



выше написал про случай с эксепшеном.

1.8K
25 сентября 2010 года
LM(AL/M)
332 / / 20.12.2005
ну да конечно же вы будете спорить сейчас. а я не буду, мне это ни к чему потому что я знаю что это плохой стиль, хотите верьте хотите -- нет.

оставлю только пару коментариев напоследок:
Цитата: Norgat
лучше тем, что при возникновении эксепшена во время чтения данных из файла его файловый дескриптор(файла) будет освобождён в любом случае(не зависимо от того продолжит ли программа свою работу или же нет).


это по сути съедание исключений, что есть очень плохой стиль программирования. и для справки: конструкция using придумана для случаев когда некоторый ресурс нужно освободить чем раньше тем лучше -- на сборщик мусора полагаться нельзя т.к. неизвестно когда он сработает, а оператора delete в C# нет.

Цитата: Norgat
угу, а по вашему в Эндрю Троелсена просто так в каждом примере с открытием файла на чтение используется using?


думайте своей головой в первую очередь. а троельсен не такой уж авторитет, читал я кое что из него

297
25 сентября 2010 года
koodeer
1.2K / / 02.05.2009
Выскажу свои мысли по поводу хорошего/плохого стиля. На мой взгляд, вопрос не стоит "использовать или нет using", вопрос следует задавать иначе: как обрабатывать возможные ошибки - используя using или ловя исключения с помощью try-catch ?
Оба способа правомерны. Главное - приучить себя всегда обрабатывать возможные ошибки/исключения тем или иным способом.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог