| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Инициализация переменной типа string [][] |
| Автор: Lion_Smith 14.3.2008, 11:41 |
| Даётся массив строк string s[]. Необходимо разбить каждую строку этого массива на 3 отдельные строки. В первой буквы, во второй цифры, в третьей знаки препинания. Т.е есть string s[] 1 | Строка 1 2 | Строка 2 3 | Строка 3 4 | Строка 4 Нужно сделать из неё двумерный масив string ss[][] 1 | Буквы | Цифры | ЗнакиПрепинания | 2 | Буквы | Цифры | ЗнакиПрепинания | 3 | Буквы | Цифры | ЗнакиПрепинания | 4 | Буквы | Цифры | ЗнакиПрепинания | и всё это должно выполняться в методе MakeStrings. Код конольного приложения вот тут: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { public void Main(string[] args) { //обявляем переменные //Как правильно записать нижестоящие 3 строчки, что бы не вылезало сообщение об ошибке: //1) Use of unassigned local variable 'program' //2) Use of unassigned local variable 's' //3) Use of unassigned local variable 'ss' //Я понимаю, что я объявил переменые, но не инициализировал их! Как их правильно инициализировать при объявлениии. Пусть s и ss будут например пустыми масивами. и как инициализировать program??? string[] s; string[][] ss; //создаём экземпляр класса Program Program program; //вызываем метод MakeStrings и передаём в него переменные по ссылке используя ref program.MakeStrings(ref s, ref ss); } // а здесь описан сам метод MakeStrings public void MakeStrings(ref string[] s, ref string [][]ss) { int n = 0; foreach (string sn in s) { foreach (int sl in sn) { //обрабатываем строку sn // если не буква или не цифра, то if (!char.IsLetterOrDigit(sn[sl])) { ss[n][2] = ss[n][2] + sn[sl]; } else { // если цифры, то if (char.IsDigit(sn[sl])) { ss[n][1] = ss[n][1] + sn[sl]; } else { // тогда точно буква ss[n][0] = ss[n][0] + sn[sl]; } } } n = +1; } } } } |
| Автор: CYBERDREAM 14.3.2008, 11:47 | ||
Задай размеры массивам
|
| Автор: Lion_Smith 14.3.2008, 12:08 |
| Поправил код! теперь он выглядит во так: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.OleDb; namespace ConsoleApplication2 { class Program { public void Main(string[] args) { string[] s = new string[10]; string[,] ss = new string[10, 3]; // но по прежнему выскакивает ошибка Use of unassigned local variable 'program' Program program; program.MakeStrings(ref s, ref ss); } public void MakeStrings(ref string[] s, ref string [,]ss) { int n = 0; foreach (string sn in s) { foreach (int sl in sn) { //обрабатываем строку sn // если не буква или не цифра, то if (!char.IsLetterOrDigit(sn[sl])) { ss[n,2] = ss[n,2] + sn[sl]; } else { // если цифры, то if (char.IsDigit(sn[sl])) { ss[n,1] = ss[n,1] + sn[sl]; } else { // тогда точно буква ss[n,0] = ss[n,0] + sn[sl]; } } } n = +1; } } } } |
| Автор: CYBERDREAM 14.3.2008, 12:16 | ||||
вместо
напиши
Добавлено через 50 секунд Тебе нет никакого резона создавать новый объект класса Program |
| Автор: QryStaL 14.3.2008, 12:29 |
| |
| Автор: vponomarov 14.3.2008, 13:09 |
| Lion_Smith, неплохо бы для себя уяснить разницу между объявлением и созданием переменной. если вы напишите Program program - это говорит всего-лишь о том, что program является объектом типа Program, а работать с ним можно только после создания, т.е. Program program=new Program() (ну или какой-нить другой конструктор). поэтому компилятор и выдает Вам ошибки. |
| Автор: Lion_Smith 14.3.2008, 13:12 |
| Спасибо за пояснения.. почитаю соответсвующие главы в Книге |