Помогите пожалуйста,я только учусь программированию.Как исправить данные ошибки?
using System;
using System.Collections.Generic;
namespace labWork_29_17
{
public class Program
{
public static void Main(string[] args)
{
List<string> currency = new List<string> (); // Создание списка currency
currency.Add("Euro"); // Добавление в список currency Euro
currency.Add("Dollar"); // Добавление в список currency Dollar
currency.Add("Rouble"); // Добавление в список currency Rouble
int count; // Перемнная для записи количества новых элементов
Console.Write("Введите количество новых элементов для списка: ");
count = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < count; i++)
{
Console.Write("Введите новую валюту: ");
currency.Add(Console.ReadLine()); // Добавление в список нового элемента
}
Console.WriteLine("\nСписок всех валют: ");
foreach (var item in currency)
{
Console.WriteLine("({0}) - {1}", currency.IndexOf(item) + 1, item); // Вывод всех элементов списка currency
}
int position1, position2; // Переменные для записи позиций
do
{
Console.WriteLine("\nУкажите две позиции, значения между которыми будут выведены: ");
position1 = Convert.ToInt32(Console.ReadLine());
position2 = Convert.ToInt32(Console.ReadLine());
} while (position1 < 0 || position1 > currency.Count || position2 < 0 || position2 > currency.Count); // Проверка на соблюдение границ списка
Console.WriteLine("\nИзменённый список");
for (int i = position1 - 1; i < position2; i++)
{
Console.WriteLine("({0}) - {1}", currency.IndexOf(currency[i]) + 1, currency[i]); // Вывод изменённого списка
}
Dictionary<string, int> theusers = new Dictionary<string, int> (); // Создание словаря с именем theusers
theusers.Add("asus", 7); // Добавление в словарь элементa ключ asus,значение 7
theusers.Add("dell", 1); // Добавление в словарь элементa ключ dell,значение 1
theusers.Add("hp", 9); // Добавление в словарь элементa ключ hp,значение 9
Console.Write("\nВведите количество новых элементов для словаря: ");
count = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < count; i++)
{
Console.WriteLine("Введите данные для нового пользователя (логин и возраст): ");
string login = Console.ReadLine(); // Ввод ключа
int age = Convert.ToInt32(Console.ReadLine()); // Ввод значения
theusers.Add(login, age); // Создание элемента с введённым ключом и значением
}
Console.WriteLine("Введите значение") ;
string remove = Console.ReadLine();
for (int i = 0; i<theusers.Count;i++)
{
if (remove == theusers [i])
{
theusers[i].Remove();
}
}
}
}
}
Compilation error (line 66, col 27): The best overloaded method match for 'System.Collections.Generic.Dictionary<string,int>.this[string]' has some invalid arguments
Compilation error (line 66, col 37): Argument 1: cannot convert from 'int' to 'string'
Compilation error (line 68, col 13): The best overloaded method match for 'System.Collections.Generic.Dictionary<string,int>.this[string]' has some invalid arguments
Compilation error (line 68, col 22): Argument 1: cannot convert from 'int' to 'string'
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Если я правильно понял, то на последнем этапе нужно ввести число, и удалить из словаря элемент, значение которого равно этому числу.
В этом случае, исправленный фрагмент кода будет выглядеть вот так
Console.WriteLine("Введите значение");
int remove = Convert.ToInt32(Console.ReadLine());
foreach (KeyValuePair<string, int> pair in theusers)
{
if (remove == pair.Value)
{
theusers.Remove(pair.Key);
break;
}
}
Только имейте в виду, что данный код удалит только одну первую попавшуюся запись. Если надо удалить все попадающие под условие, код будет немного другой.
Например, можно вот так:
Console.WriteLine("Введите значение");
int remove = Convert.ToInt32(Console.ReadLine());
List<string> removeusers = new List<string>();
foreach (KeyValuePair<string, int> pair in theusers)
{
if (remove == pair.Value)
{
removeusers.Add(pair.key);
}
}
foreach (string login in removeusers)
{
theusers.remove(login);
}