[英]How can I break the loop and exclude the last input in C#?
我必須編寫一個代碼來詢問用戶將輸入多少部電影。 輸入電影數量后,應要求用戶輸入電影的名稱。 所有名稱都將添加到數組movies
。 如果用戶輸入“退出”,程序應該停止並顯示用戶已經輸入的電影。
我寫了這段代碼:
Console.WriteLine("Enter number of movies:");
int num1 = int.Parse(Console.ReadLine());
string[] movies = new string[num1];
for (i = 0; i < num1; i++)
{
Console.WriteLine("Enter movie name:");
movies[i] = Console.ReadLine();
if(movies[i] == "Exit" || movies[i] == "exit")
{
break;
}
}
for (i = 0; i < num1; i++)
{
Console.WriteLine("Movie {0} is {1}", i + 1, movies[i]);
}
問題是:如果用戶編寫exit
,程序會將exit
顯示為電影。 例如:用戶想輸入 4 部電影,第 1 部電影作為第 1 部電影進入,作為first
2 部電影exit
。 本例中程序的output如下:
movie 1 is first
movie 2 is exit
movie 3 is
movie 4 is
但是程序應該只顯示輸入的第一部電影。 我究竟做錯了什么?
將輸入的電影設置為臨時變量。 僅當它不是您的退出條件時才添加它。
//Rest of the code left out for simplicity
Console.WriteLine("Enter movie name:");
string movie = Console.ReadLine();
if(movie.Equals("exit", StringComparison.OrdinalIgnoreCase)
break;
else
movies[i] = movie;
您可以進行一些額外的改進,例如使用List
。 這樣你就不需要管理大小和提示用戶。
首先,讓我們看看你有什么:在檢查是否退出之前添加值。
此外,您可以通過忽略字母大小寫進行比較(Broots Waymb 建議的答案)。
最后,您打印整個數組而不檢查是否有一些值。
Console.WriteLine("Enter number of movies:");
int num1 = int.Parse(Console.ReadLine());
string[] movies = new string[num1];
for (i = 0; i < num1; i++)
{
Console.WriteLine("Enter movie name:");
movies[i] = Console.ReadLine(); // you always add the value
if(movies[i] == "Exit" || movies[i] == "exit")
{
break;
}
}
for (i = 0; i < num1; i++) // there is no condition to stop the iteration.
Console.WriteLine("Movie {0} is {1}", i + 1, movies[i]);
為了解決打印問題,我們可以添加一個索引,該索引只有在輸入電影時才會增加。 或者您可以使用列表或數組,然后使用 foreach 循環進行迭代。 另一種解決方案是保留數組但將其轉換為打印任務列表的可能性。
Console.WriteLine("Enter number of movies:");
int num1 = int.Parse(Console.ReadLine());
string[] movies = new string[num1];
int enteredMovies = 0;
for (i = 0; i < num1; i++)
{
Console.WriteLine("Enter movie name:");
string movie = Console.ReadLine();
if(movie.Equals("exit", StringComparison.OrdinalIgnoreCase)
{
break;
}
else
{
movies[i] = movie;
enteredMovies++;
}
}
for (i = 0; i < enteredMovies; i++)
{
Console.WriteLine("Movie {0} is {1}", i + 1, movies[i]);
}
或者您可以使用我提到的列表。
使用List<T>
可能比使用數組更容易,除非分配特別需要使用 arrays。 這將使用如下:
你有幾個問題:
exit, Exit, EXIT, ExIt
您的程序都會終止。您的代碼可以改進,但由於您是初學者並且可能不知道高級的東西,我將保持原樣:
using System;
public class Test
{
public static void Main(String[] args)
{
Console.WriteLine("Enter number of movies:");
int num1 = int.Parse(Console.ReadLine());
string[] movies = new string[num1];
for (int i = 0; i < num1; i++)
{
Console.WriteLine("Enter movie name:");
String movie = Console.ReadLine();
if (movie.ToLower() == "exit")
break;
else
movies[i] = movie;
}
for (int i = 0; i < num1; i++)
Console.WriteLine("Movie {0} is {1}", i + 1, movies[i]);
}
}
謝謝大家的關注。 這是一個不錯的社區。
我對每個答案都做了一點,並設法解決了這個問題。 我可以學到很多東西。
謝謝你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.