Рейтинг:
2
Richard MacCutchan
int num = Convert.ToInt32(Console.ReadLine());
Эта строка преобразует только одно число, так как это то, что вы попросили ее сделать. Вы должны иметь дело с несколькими числами чем-то вроде:
string[] numbers = Console.ReadLine().split(" ");
foreach (string num in numbers)
{
int num = Convert.ToInt32(num);
// test for less or not
}
Примечание лучше использовать
TryParse
скорее, чем
Convert
чтобы учесть случай, когда пользователь вводит недопустимые символы.
super_user
это показывает ошибку
Ошибка 1 лучший перегруженный метод соответствует ' string.Split(params char []) ' имеет некоторые недопустимые аргументы
Ошибка 2 Аргумент 1: не удается преобразовать из 'string' в ' char[]'
Richard MacCutchan
Тогда сейчас было бы хорошее время, чтобы пойти в документации MSDN и узнать строку.метод Split(ы).
Рейтинг:
2
Member 12747274
Я бы решил это так:
namespace check_Numbers
{
class Program
{
static void Main(string[] args)
{
string[] seperators = {",", " ", ";", "."};
int num2;
Console.WriteLine("Input numbers over 10:");
string[] splitArray = Console.ReadLine().Split(seperators, StringSplitOptions.RemoveEmptyEntries);
foreach (string num in splitArray)
{
If(Int32.TryParse(num, out num2) == true)
{
if (num2 < 10)
{
Console.WriteLine(num + " is smaller than 10");
}
}
else
{
Console.WriteLine(num + " is not a f***ing number...");
}
}
}
}
}
[no name]
Почему вы преобразуете строку в строку? Почему вы используете преобразования.ToInt32? Что происходит, когда пользователь вводит 1 2 3 a b c?
Member 12747274
Спасибо за обратную связь. Прежде всего, я новичок в C#, и я думаю, что преобразование строки в строку-это остаток от моего устранения какой-то странной проблемы, возникшей у меня с ".Split". я не мог интегрировать только простой символ ( " ,") и сделал обходной путь с массивом строк. Да, это абсурдно ненужно!
Но для новообращенного.ToInt: я сделал это, чтобы проверить, меньше ли число 10?
Я думаю, что это необходимо или я ошибаюсь? Но да, вы правы, я должен "попытаться поймать" это!
[no name]
Нет, вы вообще не должны использовать Convert. Вы получите исключение, если кто-то наберет что-то другое, кроме номера. Следует ли нам инт.TryParse, который не будет выдавать исключение, если преобразование завершится неудачно.
Member 12747274
Теперь я обновил свой код, спасибо за совет. Но теперь есть проблема, что каждый персонаж рассматривается как "младше 10". Не было бы исключением + попытаться поймать лучше, чтобы вернуть сообщение об ошибке? Или есть возможность "игнорировать" ввод символов?
[no name]
Поскольку TryParse возвращает bool, указывающий на успех или неудачу, ваше сообщение об ошибке будет показано в другой части вашего if. Исключения могут быть дорогостоящими с точки зрения обработки, поэтому я стараюсь избегать их как можно больше. Вы могли бы поймать исключение здесь, но есть лучший способ сделать это.
Member 12747274
Ладно, теперь понятно. Поэтому я еще раз обновил свой код, и теперь его стоит использовать :D
Рейтинг:
0
Patrice T
Цитата:
но это работает так когда я ввожу только 1 например если я ввожу число 9 то сообщение отображает меньше числа а когда я ввожу 12 то сообщение отображает не меньше числа
где как хочу
я ввожу 10 чисел и из этой программы определяю какие числа меньше 10
Ваш код делает именно то, что вы просили.
Как это возможно, что вы не понимаете, что делает код ? Это твой код ?
Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.
Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[
^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[
^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
super_user
нет... когда я ввожу 10 чисел по горизонтали и ввожу затем ошибку отображения необработанного исключения типа ' System.Исключение " произошло в practise.exe
где, как и когда я пытаюсь ввести число по вертикали, то есть когда я ввожу число 12, а затем нажимаю enter, то появляется сообщение, что не меньше 10 ...где как я хочу ввести 10 чисел то хочу отобразить сообщение
super_user
проверьте этот GIF
http://i.imgur.com/xmfiApI.gifv
Patrice T
GIF не существует
super_user
проверить еще раз .. это существует
Patrice T
вы сделали его доступным для публики ?
super_user
это всегда публично вы можете проверить обновленный вопрос