为什么双面积= 0;?

时间:2016-09-12 09:00:01

标签: c#

只是c#的新手寻找一些指导。

如果我使用双面积,在下面的代码中;它会给我错误:"使用未分配的局部变量区"。我不得不把double area = 0;

我的问题是为什么?为什么我必须为它赋值。我以前从来没有这样做过,所以对我来说有点混乱。

提前感谢您的回复。

'use strict';

let Wit = null;
let interactive = null;
try {
    // if running from repo
    Wit = require('../').Wit;
    interactive = require('../').interactive;
} catch (e) {
    Wit = require('node-wit').Wit;
    interactive = require('node-wit').interactive;
}

const accessToken = (() => {
    if (process.argv.length !== 3) {
        console.log('usage: node examples/creditcardbalance.js <wit-access-token>');
        process.exit(1);
    }
    return process.argv[2];
})();

// Quickstart example
// See https://wit.ai/ar7hur/quickstart

const firstEntityValue = (entities, entity) => {
    const val = entities && entities[entity] &&
      Array.isArray(entities[entity]) &&
      entities[entity].length > 0 &&
      entities[entity][0].value
    ;
    if (!val) {
        return null;
    }
    return typeof val === 'object' ? val.value : val;
};

const actions = {
    send(request, response) {
        const {sessionId, context, entities} = request;
        const {text, quickreplies} = response;
        return new Promise(function(resolve, reject) {
            console.log('sending...', JSON.stringify(response));
            return resolve();
        });
    },
    getBalance({context, entities}) {
    return new Promise(function(resolve, reject) {
        var name = firstEntityValue(entities, "name");
        var last4digit = firstEntityValue(entities, "Last4digits");
        
        if (name && last4digit) {
            context.name = name;
            context.last4digit = last4digit;
            context.balance = 'Rs.10000' + name + last4digit; // we should call a credit card API here
            delete context.cardnumbermissing;
        }
        else {
            context.cardnumbermissing = true;
            context.name = name;
            delete context.balance;
        }
        return resolve(context);
    });
},
};

const client = new Wit({accessToken, actions});
interactive(client);
// JavaScript source code

3 个答案:

答案 0 :(得分:4)

想象一下用户输入123

  

“请为Circle选择1,为Rectangle选择2,为Triangle选择3:

问题。在这种情况下,area将不会被分配(不会执行case)和

 Console.WriteLine("\nThe area is {0}", area);

不知道输出什么

答案 1 :(得分:1)

如上所述,最好初始化变量以确保它具有值,并通过调用它而不分配任何值来避免可能的异常错误。另外,添加一个&#34; goto&#34;放置将允许您返回起点(虽然我宁愿您为此创建单独的方法)

        int userValue, rad, heightOfRectangle, widthOfRectangle, baseOfTriangle, heightOfTriangle;
        double area;

        Console.Write("\n\n");
        Console.Write("Calculating Area of Geometrical Shape\n");
        Console.Write("=======================================\n");
        Console.Write("\n\n");

        Start:

        Console.Write("Please select 1 for Circle, 2 for Rectangle and 3 for Triangle: ");

        userValue = Convert.ToInt32(Console.ReadLine());

        switch (userValue)
        {
            case 1:
                Console.Write("Please Enter Radius of Circle: ");
                rad = Convert.ToInt32(Console.ReadLine());
                area = 3.14 * rad * rad;
                break;

            case 2:
                Console.Write("Please enter Height of Rectangle: ");
                heightOfRectangle = Convert.ToInt32(Console.ReadLine());
                Console.Write("Please enter Width of Rectangle: ");
                widthOfRectangle = Convert.ToInt32(Console.ReadLine());
                area = widthOfRectangle * heightOfRectangle;
                break;

            case 3:
                Console.Write("Please enter Base of Triangle: ");
                baseOfTriangle = Convert.ToInt32(Console.ReadLine());
                Console.Write("Please enter height of Triangle: ");
                heightOfTriangle = Convert.ToInt32(Console.ReadLine());
                area = .5 * baseOfTriangle * heightOfTriangle;
                break;
            default:
                goto Start;
        }

        Console.WriteLine("\nThe area is {0}", area);
        Console.Read();

答案 2 :(得分:0)

错误的原因是您的switch声明中的非案例可能会发生 - 例如用户输入错误。

局部变量也没有用默认值初始化,因此如果不执行case语句,则area没有值Why compile error "Use of unassigned local variable"?