-2

我试图做一件简单的事情,但它给了我一个错误。错误是:

使用未分配的局部变量“answer”

我哪里做错了?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1

{
    class Program
    {
    static void Main(string[] args)
    {

        int l;
        int w;
        int h;
        Console.WriteLine("Please Enter th points");
        Console.Write("Length: ");
        l = int.Parse(Console.ReadLine());
        Console.Write("Width: ");
        w = int.Parse(Console.ReadLine());
        Console.Write("Height: ");
        h = int.Parse(Console.ReadLine());

        int answer;
        Console.WriteLine("Enter what you want to Do [S,P,V]");
        string cupSize = Console.ReadLine();
        switch (cupSize)
        {
            case "s":
                answer = (l * w);
                break;
            case "S":
                answer = (l * w);
                break;
            case "p":
                answer = ((l + w) * 2);
                break;
            case "P":
                answer = ((l + w) * 2);
                break;
            case "v":
                answer = (l * w * h);
                break;
            case "V":
                answer = (l * w * h);
                break;
            default:
                Console.WriteLine("Try agian");
                break;
        }

        if (answer != 0)
        {
            Console.WriteLine("The answer is " + answer );
        } 
    }
}
}
4

4 回答 4

4

您必须answer在每个可能的代码路径中设置值,但如果您的switch-block 用于这种default情况,则不会设置它。

在声明时设置值:

int answer = 0;

或者在你的default情况下:

default:
    answer = 0;
    Console.WriteLine("Try agian");
    break;
于 2013-09-11T21:35:04.947 回答
1

正如错误试图告诉您的那样,该变量不一定具有值。

如果您的代码遇到这种default:情况,它将不会被分配。

于 2013-09-11T21:34:49.570 回答
1

你需要设置答案变量试试这个

int answer = 0;
于 2013-09-11T21:35:41.830 回答
0

您正在尝试设置一个未初始化的 int 。

int answer = 0;

于 2013-09-11T21:34:55.817 回答