为什么“总计”在当前语境中不存在?

Why does 'total' not exist in the current context?

提问人:Hash Slinging Slasher 提问时间:9/27/2023 更新时间:9/27/2023 访问量:64

问:

我正在尝试在不使用 Math.Pow() 的情况下将 n 打印到 p 的幂。 下面是伪代码:

从用户那里获取两个整数 n , p

使用 for 循环计算幂函数 n ** p,而不使用 Math.Pow() 方法。 输出结果

使用 while 循环重复计算 输出结果

使用 do-while 循环重复计算 输出结果。

我尝试以多种方式声明变量,并在 for 循环中返回总数。

using System;


public class Powers
{
    
    public static void Main()
    {

        Console.WriteLine("Enter the base integer here:");
        int n = int.Parse(Console.ReadLine());

        Console.WriteLine("Enter exponent here:");
        int p = int.Parse(Console.ReadLine());

        for (int total = 1, counter = 1; counter <= p; ++counter)
        {
            
            total = total * n;          
        }

        Console.Write($"{n} to the {p} power is {total}");
    }
}
C# 循环 返回 迭代

评论

0赞 Zohar Peled 9/27/2023
首先 - 如果用户输入怎么办?永远不要相信用户输入。代替 ,请使用 。第二 - 请阅读常见问题解答:如何提出和回答家庭作业问题?bint.Parseint.TryParse
0赞 Fildor 9/27/2023
@ZoharPeled它会崩溃。但是:鉴于这很可能是一项专注于不同地点的“学习努力”,鉴于 OP 意识到这一事实我个人会掩盖这一点。为了简洁起见,我可以把这部分留出来,只要他们知道自己在做什么以及为什么。也许教学机构应该暂时提供“安全获取用户输入”功能的封装。但我认为这些天他们不会被打扰。过去,我们会有一个预定义的紧身胸衣,上面写着“把你的代码放在这里:”......
0赞 Zohar Peled 9/27/2023
@Fildor我理解你的意思,我确实同意学习应该集中精力,但我也认为这是人们学习坏习惯的一种方式。使用并不比使用容易得多,那么为什么不从更好的 habbit 开始呢?int.Parseint.TryParse
1赞 Fildor 9/27/2023
我不反对,是的。那些“但我只为学习目的保存密码”的人也是如此...... :D
1赞 Hash Slinging Slasher 9/27/2023
我知道验证和值检查的重要性,但不幸的是,我还没有学会做这些事情的所有方法。我的教授是个新手,他几乎不懂许多 C# 机制。对我来说多么有趣。

答:

2赞 Tim Roberts 9/27/2023 #1

子句中定义的变量仅存在于循环内部。如果你想让它在循环中幸存下来,你必须在外部定义它:forfor

        int total = 1;
        for (int counter = 1; counter <= p; ++counter)
        {
            total = total * n;          
        }

        Console.Write($"{n} to the {p} power is {total}");
2赞 kio v 9/27/2023 #2

在块中声明的变量仅在循环体内可见,不能在循环外部访问。while/for

您应该将 的声明移出循环。喜欢这个totalwhile

 int total = 1;
 for (int counter = 1; counter <= p; ++counter){
    total = total * n;          
 }

 Console.Write($"{n} to the {p} power is {total}");

评论

1赞 kio v 9/27/2023
为了更好地理解,我更新了我的答案