2013-10-26 5 views
-4

У меня проблема с простым кодом. Что я хочу сделать, это: Например, если пользователь дает только номер negatieve, а не положительным, то я хочу видеть:как исправить эту петлю?

"this is not valid" 

Do you want to try again <y/n>? 

Я уже пробовал много комбинации с, если, если еще, но тогда я не вижу этого "do you want to try again?" или я вижу их обоих и результат.

Это не относится и максимальное значение: 0

Это не хорошо.

int invoer; 
int max; 
string repeat; 

Console.WriteLine("Please give a positive number.\nIf you enter a negative number its not going to work"); 

do 
{ 
    invoer = 0; 
    max = 0; 
    repeat = ""; 

    for (int i = 1; invoer >= 0; i++) 
    { 
     Console.Write(i + "> "); 
     invoer = int.Parse(Console.ReadLine()); 

     if (max < invoer) 
      max = invoer; 
    } 

    Console.WriteLine("Maximum value is: " + max); 
    Console.WriteLine("do you want to try again? y/n: "); 
    repeat = Console.ReadLine(); 
} while (repeat == "y" || repeat == "Y"); 
+4

Просим исправить сначала отступ! –

+0

Вам нужно использовать 'TryParse' вместо' Parse' и посмотреть на результат bool, чтобы узнать, нужно ли снова спрашивать. –

+1

Да, это был ответ. спасибо @RBarryYoung. Теперь я знаю, что «хочу» иметь меньше букв, чем хочется. bravo – user2880279

ответ

0

Вы должны использовать uint.TryParse вместо int.Parse. Он не будет принимать отрицательные числа и не будет генерировать исключение из-за неправильного ввода.

+0

, но проблема в том, что я не знаю, что такое TryParse. Это своего рода домашнее задание. Я не могу использовать другие коды, которые я не узнал. – user2880279

+0

Вы уверены, что не знаете о [int.TryParse] (http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx)? –

+0

да. я уверен. – user2880279

0

Если вы не можете использовать int.TryParse, вы всегда можете убедиться, что ваш вход числовой перед разбором его:

var input = Console.ReadLine(); 
var number = !string.IsNullOrWhiteSpace(input) ? input : "0"; 

var numeralExpression = new System.Text.RegularExpressions.Regex(@"^(\d|-\d)$"); 

if (numeralExpression.IsMatch(number)) 
{ 
    invoer = int.Parse(number); 
} 
+0

спасибо за это, но, как я уже сказал, это слишком сложно для моего уровня. Все, что я хочу сделать, это. Если первое отрицательное значение отрицательно, программа должна предложить сделать это снова ... и показать сообщение об ошибке. Как это недействительно. вы хотите попробовать еще раз. – user2880279

2

Я редактировал этот код для вас. Он задает пользователям неограниченное количество времени, какое положительное значение имеет. Он дает только max, если введенное значение является максимальным. И это не дает max, если значение отрицательное ... Я считаю, что это то, что вы хотите?

Однако этот код является ужасным. Я исправил, что с этим мог. Если это не то, что вы ищете, просто отложите его и начните новый, потому что уродство в том, как это работает, затрудняет работу, чем должно быть.

Если это ответ, пожалуйста, проверьте это.

int invoer; 
    int max; 
    string repeat; 

    Console.WriteLine("Please give a positive number.\nIf you enter a negative number its not going to work"); 

    do 
    { 
     invoer = 0; 
     max = 0; 
     repeat = ""; 

     for (int i = 0; invoer >= 0; i++) 
     { 
      Console.Write(i + "> "); 
      invoer = int.Parse(Console.ReadLine()); 

      if (max < invoer) 
      { 
       max = invoer; 
       Console.WriteLine("Maximum value is: " + max); 
      } 
     } 

     if (invoer < 0) 
     { 
      Console.WriteLine("This is not valid..."); 
     } 


     Console.WriteLine("do you want to try again? y/n: "); 
     repeat = Console.ReadLine(); 
    } 
    while (repeat == "y" || repeat == "Y"); 
} 
} 
} 
+0

Да, но я уже пробовал это. результат недействителен, но также программа пытается найти максимальное значение. – user2880279

+0

да Но я уже пробовал это. вы также видите «максимальное значение = 0», которое я не хочу видеть. – user2880279

+0

@ user2880279 Кроме того, вам может понадобиться реализовать средство для выхода из программы. Это может не потребоваться для вашего назначения HW, и я не знаю, но это было бы хорошей практикой для вас. – Zoro

Смежные вопросы