4 回答

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以將程序視為從上到下逐行執(zhí)行,并且僅在到達(dá) while 循環(huán)結(jié)束時(shí)向上移動(dòng)。while 循環(huán)的末尾是與循環(huán)開(kāi)始時(shí)匹配的。}{
知道了這一點(diǎn),你就會(huì)明白為什么它總是說(shuō)總和為零。從您的代碼:
int sum = 0;
Console.WriteLine("Sum of values: " + sum);
由于程序執(zhí)行“從上到下逐行”,因此它將首先設(shè)置為 0,然后打印出總和。所以它會(huì)一直打印.如果您希望它在計(jì)算完總和后打印出總和,則需要將總和的下移到計(jì)算總和的位置下方。sum"Sum of values: 0"WriteLine
同樣的問(wèn)題也適用于 : 打印此語(yǔ)句的行出現(xiàn)在 之后,因此只有在 0 到 101 之間時(shí)才會(huì)執(zhí)行。由于您嘗試捕獲不在 0 和 101 之間的場(chǎng)景,因此您需要將語(yǔ)句移動(dòng)到循環(huán)上方。"Invalid input. Try again."while (0 < s && s < 101)sswhile
因此,要解決眼前的問(wèn)題,只需做兩件事:
1)移動(dòng)兩條線
Console.WriteLine("Sum of values: " + sum);
Console.ReadKey();
到 while 循環(huán)之后(緊跟在 which 之后,與 的縮進(jìn)級(jí)別相同)。}while
2)移動(dòng)三條線
if (s < 0 && 101 < s)
{
Console.WriteLine("Invalid input. Try again.");
}
直到正下方,然后仔細(xì)檢查邏輯。如果小于零或大于 101,則聽(tīng)起來(lái)要打印語(yǔ)句。int s = Convert.ToInt32(Console.ReadLine());ss

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果需要循環(huán),則應(yīng)遵循 Heath Raftery 說(shuō)明
否則你可以寫(xiě)這樣的東西:
static void Main(string[] args)
{
Console.WriteLine("Enter a beginning value between 1 and 100");
int s = Convert.ToInt32(Console.ReadLine());
if (s < 0 || s > 100)
Console.WriteLine("Invalid input. Try again.");
else
Console.WriteLine($"Sum of values: {Enumerable.Range(1,s).Sum()}");
}
或者正如 Haldo 所說(shuō),您可以使用 的公式并將最后一個(gè) WriteLine 替換為:N * (N+1) / 2
Console.WriteLine($"Sum of values: {s * (s+1) / 2}")

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
這是一個(gè)有效的算法......
Console.WriteLine("Enter a value between 1 and 100");
var input = int.Parse(Console.ReadLine());
int sum = 0;
if (input<1 || input>100) {
Console.WriteLine("Sorry, Try again");
}
else{
while(input > 2){
input-=1;
sum+=input;
}
}
Console.WriteLine("Sum of values: " + sum);

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
試試這個(gè):
static void Main(string[] args)
{
while (true)
{
Console.Write("Enter a number between 1 and 100: ");
int Number = Convert.ToInt32(Console.ReadLine());
if (Number < 0 || Number > 100)
Console.WriteLine("Sorry. Try again.");
else
{
int sum = 0;
for (int i = 1; i <= Number; i++)
{
sum = sum + i;
}
Console.WriteLine("Sum of values: " + sum);
}
}
}
- 4 回答
- 0 關(guān)注
- 261 瀏覽
添加回答
舉報(bào)