Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2017, 13:23   #1
AlexeyG
 
Регистрация: 17.05.2017
Сообщений: 7
По умолчанию Неполадки с циклом

Почему в цикле считываются значения только через 2?
Код:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
	class Program
	{
		static void Main(string[] args)
		{
			int[] array = new int[8];
			for (int i = 0; i < 8; i++)
			{
				array[i] = Console.Read();
				Console.WriteLine("Сообщение" + i);
			}
			Console.WriteLine(array[1] + array[0]);
			Console.WriteLine("{0} + {1} = {2}",1,2,3);
			Console.ReadKey();
		}
	}
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 18.05.2017 в 13:31.
AlexeyG вне форума Ответить с цитированием
Старый 18.05.2017, 13:35   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от AlexeyG Посмотреть сообщение
Почему в цикле считываются значения только через 2?
какие значения? и в чём это проявляется?
Вы вообще выводите только второе и первое значение массива.

и зачем строчка
Цитата:
Сообщение от AlexeyG Посмотреть сообщение
Код:
Console.WriteLine("{0} + {1} = {2}",1,2,3);
?
если нужно вывести текст 1 + 2 = 3
то так и напишите:
Код:
Console.WriteLine("1 + 2 = 3");
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.05.2017, 13:38   #3
AlexeyG
 
Регистрация: 17.05.2017
Сообщений: 7
По умолчанию

В консоли вызывается считывание элементов только с номерами 0,3,6, остальные не читаются. Строку писал ради эксперемента.
AlexeyG вне форума Ответить с цитированием
Старый 18.05.2017, 13:38   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Выведите весь массив и посмотрите что в нем.
Код:
            foreach (var item in array)
            {
                Console.WriteLine(item);
            }
Read() не всю строку читает, поэтому после введенного числа в потоке ввода еще остаются символы перевода строки (\r, \n или 13, 10 http://www.asciitable.com/)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.05.2017, 13:43   #5
AlexeyG
 
Регистрация: 17.05.2017
Сообщений: 7
По умолчанию

Понял, а как можно сделать считывание символов с строки?
AlexeyG вне форума Ответить с цитированием
Старый 18.05.2017, 13:46   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

ReadLine + int.Parse
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.05.2017, 13:49   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

заполнить массив из строки на C# можно таким кодом:

Код:
    Console.WriteLine("Ввод массива. Введите целые числа в одну строку (разделяя их пробелами): ");
    string text2 = Console.ReadLine();
    int[] masiv = text2.Split(new char[]{' '}, 
                           System.StringSplitOptions.RemoveEmptyEntries).Select(h => Int32.Parse(h)).ToArray();
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.05.2017, 14:03   #8
AlexeyG
 
Регистрация: 17.05.2017
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
заполнить массив из строки на C# можно таким кодом:

Код:
    Console.WriteLine("Ввод массива. Введите целые числа в одну строку (разделяя их пробелами): ");
    string text2 = Console.ReadLine();
    int[] masiv = text2.Split(new char[]{' '}, 
                           System.StringSplitOptions.RemoveEmptyEntries).Select(h => Int32.Parse(h)).ToArray();

Сделал по примеру Алекса, получилось:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
	class Program
	{
		static void Main(string[] args)
		{
			int[] array = new int[8];
			for (int i = 0; i < 8; i++)
			{
				
				String n = Console.ReadLine();
				array[i] = int.Parse(n);
		
			}
			for (int i = 0; i < 8; i++)
			{

				Console.WriteLine("Элемент {0} = {1}",i,array[i]);
			}
			Console.ReadKey();
		}
	}
}
Работает, какой вариант лучше: ваш или как я сделал по подсказке Алекса?
AlexeyG вне форума Ответить с цитированием
Старый 18.05.2017, 14:09   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зависит от того как вы вводить хотите. Тут по одному числу в строке, а там все числа в одной строке разделенные пробелами (и там не обязательно 8).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.05.2017, 14:10   #10
AlexeyG
 
Регистрация: 17.05.2017
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Зависит от того как вы вводить хотите. Тут по одному числу в строке, а там все числа в одной строке разделенные пробелами (и там не обязательно 8).
Спасибо
AlexeyG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неполадки с Apache Kasper1 Общие вопросы Web 1 23.01.2011 16:53
неполадки в счетчике mrgrudge PHP 3 15.09.2010 15:38
Неполадки с оглавлением Syltan HTML и CSS 4 09.04.2010 09:53
неполадки с принтером alex(21) Компьютерное железо 7 06.10.2009 17:49