using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Menu_switching
{
class Program
{
static void Main(string[] args)
{
int number=1,number1=2,number2=3,number3=4;
string commodity="客戶信息管理",commodity1="購物結算",commodity2="真情回饋",commodity3="注銷";
Console.WriteLine("歡迎使用MYSHOPPING管理系統");
Console.WriteLine("***********************************");
Console.WriteLine(number +"."+ commodity);
Console.WriteLine(number1 + "." + commodity1);
Console.WriteLine(number2 + "." + commodity2);
Console.WriteLine(number3 + "." + commodity3);
Console.WriteLine("***********************************");
int figure;
do
{
Console.WriteLine("請輸入數字:");
figure = int.Parse(Console.ReadLine());
switch (figure)
{
case 1:
Console.WriteLine(number + "." + commodity);
break;
case 2:
Console.WriteLine(number1 + "." + commodity1);
break;
case 3:
Console.WriteLine(number2 + "." + commodity2);
break;
case 4:
Console.WriteLine(number3 + "." + commodity3);
break;
default:
Console.WriteLine("輸入錯誤,請重新輸入");
break;
}
} while (figure<=5);
}
}
}
別人告訴我,把while (figure<=5);改成while (true);就可以了,我試了一下果然可以了,但是我就是想不通原因是什麼,誰幫我分析一下,我寫的為什麼會這樣(連續錯誤4次就跳出循環了),而這個true我又搞不懂它在判斷哪個的值為true才又去執行do裡面的代碼了?
首先while (figure<=5),是判斷你輸入的是不是小於等於5,只有滿足這個條件才會執行do(do...while()是先執行一次do,然後在判讀while的條件語句,所以不論你第一次輸入的什麼,循環都回執行一次)。改成while (true)之後,while得條件語句是true,也就是條件語句一直為真,所以會一直執行循環。這個true沒有判斷任何值