2013-11-01 5 views
0

Я пытаюсь получить некоторую практику на C#, готовую к тестированию с ограничением времени через 2 недели, и пытаюсь выполнить упражнения, которые я нашел в книгах & в Интернете.Как бы исправить этот цикл?

Упражнение попросило использовать цикл while, чтобы попросить пользователя ввести свое имя, а если оно не было «XXX», оно может продолжать цикл. Но проблема в том, что после написания цикла она просто продолжается, поэтому пользователь не может ввести «XXX», чтобы остановить программу, поэтому мне было интересно, знает ли кто-нибудь об этом решении?

Вот код, который я написал до сих пор ..

String sName; 
//Declaring the variable 


Console.Write("Enter a name (or XXX to end): "); 
sName = Console.ReadLine(); 
//Prompting user to enter the name or to end the program by telling them to type XXX 



while (sName != "XXX") 
{ 
    Console.Write("The Name is: " + sName); 
    Console.WriteLine(); 
} 

//Start loop 

Console.WriteLine("You are now past the while loop"); 
//If XXX is typed, message is displayed 


Console.WriteLine("Press any key to close"); 
Console.ReadKey(); 
//Prevent program from closing 
+4

Вы никогда не запрашивает у пользователя ввод в вашем время цикла, так что 'sName' никогда не будет равна«XXX». Как вы ожидаете завершения цикла, если условие никогда не выполняется? :) – Tim

+1

Переместить 'sName = Console.ReadLine();' внутри цикла. – Candide

+0

Вы никогда не получите новый вход, поэтому sName всегда будет тем, что было введено в первый раз. Попробуйте ввести «XXX» в первом приглашении. \ – MikeTheLiar

ответ

7

Ваш вклад заявление должно быть в цикле, в противном случае вы будете в конечном итоге с бесконечным циклом, если первый вход не равен XXX

String sName=""; 
while (sName != "XXX") 
{ 
    Console.Write("Enter a name (or XXX to end): "); 
    sName = Console.ReadLine(); 
    Console.Write("The Name is: " + sName); 
    Console.WriteLine(); 
} 
Console.WriteLine("You are now past the while loop"); 
Console.WriteLine("Press any key to close"); 
Console.ReadKey(); 
+0

Блестящий, это решает, спасибо! –

+0

@Alex, добро пожаловать – Habib

+1

@Alex Не забудьте ответить upvote, вы найдете полезным и примите тот, который наилучшим образом отвечает на ваш вопрос. – tnw

0

Ваша необходимость запрашивать у пользователя повторно ввести имя в цикле:

String sName; 
Console.Write("Enter a name (or XXX to end): "); 
sName = Console.ReadLine(); 
while (sName != "XXX") 
{ 
    Console.Write("The Name is: " + sName); 
    Console.WriteLine(); 
    Console.Write("Enter a name (or XXX to end): "); 
    sName = Console.ReadLine(); 
} 
+0

Эндрю, вам будет намного проще отступать код с 4 ведущими пробелами, а не добавлять '
' каждому линия. Это также более читаемо, так как сайт затем обнаруживает, что вы имеете дело с кодом, и будет его префикс. –

+0

@ScottMermelstein - Я редактировал его форматирование кода для него. – Brian

+2

@Brian Я заметил. Я тоже мог бы это сделать, но мы всегда будем следовать за ним и редактировать его ответы? Научите человека ловить рыбу ... –

0

, вы не запрашиваете пользователя для следующего ввода. Добавить следующее заявление в ваше время цикла

sName = Console.ReadLine(); 
Смежные вопросы