#c# #list #integer #filtering
Вопрос:
using System;
using System.Collections.Generic;
namespace exercise_69
{
class Program
{
public static void Main(string[] args)
{
List<int> numbers = new List<int>();
//creating a list called numbers
while (true)
{
int input = Convert.ToInt32(Console.ReadLine());
if (input == -1)
{
break;
}
numbers.Add(input);
}
//fills a list called numbers until user enters " -1 "
Console.WriteLine("from where");
int lownum = Convert.ToInt32(Console.ReadLine());
//lowest number to get printed
Console.WriteLine("where to");
int highnum = Convert.ToInt32(Console.ReadLine());
//highest number to get printed
foreach(int number in numbers)
{
if(lownum < number || highnum > number)
{
Console.WriteLine(numbers);
} //trying to filter the numbers and print them
}
}
}
}
Блок-цитата
проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю программу, консоль просто сообщает мне об этой «Системе.Коллекции.Generic.List`1[System.Int32]» итак, мой вопрос в том, как правильно фильтровать или удалять числа из списка в пределах определенного значения ( не индекса )
Комментарии:
1. Когда вы говорите «удалить из списка», действительно ли вы хотите удалить (удалить, выбросить, навсегда уничтожить) или вы хотите просто притвориться, что их нет для какой-то операции (применить фильтр), только чтобы они снова появились для какой-то другой операции (применить другой фильтр) ?
2. Отступы и ограничение дополнительных пробелов (например, дополнительные последовательные пустые строки) очень важны для удобства чтения.
3. удалите целые числа из списка, которые не входят в диапазон значений, который я ввел ( если я ввел 3 и 7, он должен удалить все целые числа до 3 и более 7), а затем распечатайте список с оставшимися числами
Ответ №1:
консоль просто сообщает мне об этой «Системе.Коллекции.Общий список`1[System.Int32]»
Это потому, что ты сделал это:
Console.WriteLine(numbers);
numbers
это List<int>
, это целая коллекция чисел, а не просто одно число. Console.WriteLine
имеет множество вариаций («перегрузок»), которые знают, как делать самые разные вещи. У него есть большое количество конкретных вариантов для чисел, строк и т. Д., И есть один вариант, который похож на «всеохватывающий»-он принимает object
, что означает, что он может принимать практически все во вселенной C#. Единственное, что он делает с этим, если вам удастся использовать этот вариант (перегрузка), — это вызывает ToString()
все, что вы передали, а затем печатает строку, которую он возвращает.
Потому что вы сдали List<int>
экзамен, и консоль.Линия записи не имеет никаких изменений, которые конкретно делают что-то классное со списком, это означает, что ваш переданный список обрабатывается универсальной версией линии записи; «вызовите строку для того, что было передано, и распечатайте результат». Поскольку у списка нет ничего особенного или интересного ToString()
, он просто наследует версию ToString()
from object
, самый простой корень из всех вещей в C#. Функция toString() объекта не делает очень многого — она просто возвращает тип объекта, который в данном случае является «Системой.Коллекции.Generic.List`1[System.Int32]».. и именно поэтому вы видите то, что видите в консоли
Теперь, когда вы знаете, почему ваш код печатает тип списка, потому что вы передаете список, можете ли вы увидеть, как изменить его, чтобы вы передавали что-то другое (например, фактическое число, которое вы хотите напечатать) ?
Console.WriteLine(numbers);
^^^^^^^
this needs to be something else - can you work out what?
Комментарии:
1. я понятия не имею , что печатать вместо этого, но теперь я, по крайней мере, понимаю, почему консоль выдает мне эту «ошибку».
2. Какова спецификация задания? (ответ: выводит номер из списка в определенном диапазоне значений ).. Итак, что это за переменная в коде, который вы написали? (подсказка: это не
numbers
так )3. Это должно быть утешением. WriteLine(ввод); Верно? , я только что заметил, что везде написал «число» вместо «ввод», теперь это работает, потому что он проверяет числа, которые я добавил в список, а не что-то, о чем я понятия не имею, почему я написал