Функция возврата - PullRequest
       3

Функция возврата

0 голосов
/ 24 февраля 2011

Почему эта программа всегда выводит текст "future" из функции year ()?

В этом случае, при b + c, равном 56, переменная year должна быть меньше (b + c)> 0 && (b + c) <1000) и возвращать «roman», но вместо этого она возвращает «future» .. . </p>

Я получил это, чтобы успешно работать, если я добавлю это:

var period:String = (year(b,c));

и в моей функции организма заставьте условные чеки проверять период. Например

if (period == "future")

но я не понимаю, зачем мне это делать. Я возвращаю строку, почему я должен установить другую переменную? Там нет ошибок компилятора, так ясно его не синтаксический?

var a:String = "Tim";
var b:int = 50; //CHANGE TO ANY INT YOU WANT
var c:int = 6; //CHANGE TO ANY INT YOU WANT
var d:String = "Kyle";
var sum:int = b+c;

function friend(d:String, a:String):String
{
    return d+" and "+a;
}

function year(b:int, c:int):String
{
    if( (b+c) > 2000 )
        return "future";
    else if( (b+c)> 1000 && b+c< 2000)
        return "colonial";
    else if( (b+c) > 0 && (b+c) < 1000)
        return "roman";
    else if( (b+c) < 0)
        return "medieval";
    else
        return "fail";

}


function intro(sum, friend):String
{
    return "Once upon a time, in the year "+ b+c +", "+friend;
}

function body(year):String
{
    if ("future")
        return " saw a flying saucer and descided they wanted do be an alien.";
    else if ("colonial")
        return " just got off the the Mayflower and descided they wanted to eat some turkey.";
    else if ("roman")
        return " are taking a break after a fierce battle with the Romans.";
    else if ("medieval")
        return " saved the princess in shining armor after slaying the dragon.";
    else if ("fail")
        return " just got an F on their exam.";
    else
        return " just got an F on their test.";            
}
trace (b+c);
trace(intro(sum, friend(d, a)) + body(year));

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Попробуйте это вместо вашей структуры if / else:

function body(year:String):String
{
    switch(year)
    {
        case "future":
        return " saw a flying saucer and descided they wanted do be an alien.";
        break;
        case "colonial":
        return " just got off the the Mayflower and descided they wanted to eat some turkey.";
        break;
        case "roman":
        return " are taking a break after a fierce battle with the Romans.";
        break;
        case "medieval":
        return " saved the princess in shining armor after slaying the dragon.";
        break;
        case "fail":
        return " just got an F on their exam.";
        break;
        default:
        return " just got an F on their test."; 
        break;
    }
}

Вы не выполняли точную проверку параметра, поэтому каждый раз он по умолчанию устанавливался в "будущее".Работает с этой функцией, вытесняя предыдущую версию.

1 голос
/ 24 февраля 2011

Вы передаете функции в качестве параметров другим функциям.Вам нужно передать результат вызова функции в качестве параметров другим функциям.

Кроме того, если вы используете int + int в конкатенации строк, вам нужно поместить это вычисление в скобки.Поэтому используйте вместо этого (int + int).

В функции intro вы передали сумму в качестве параметра, но не использовали ее.Вместо этого вы пересчитали b + c.

Попробуйте:

var a:String = "Tim";
var b:int = 50; //CHANGE TO ANY INT YOU WANT
var c:int = 6; //CHANGE TO ANY INT YOU WANT
var d:String = "Kyle";
var sum:int = b+c;

function friend(d:String, a:String):String
{
    return d+" and "+a;
}

function year(b:int, c:int):String
{
    if( (b+c) > 2000 )
        return "future";
    else if( (b+c)> 1000 && b+c< 2000)
        return "colonial";
    else if( (b+c) > 0 && (b+c) < 1000)
        return "roman";
    else if( (b+c) < 0)
        return "medieval";
    else
        return "fail";

}


function intro(sum:int, friend:String):String
{
    return "Once upon a time, in the year "+ sum +", "+friend;
}

function body(year:String):String
{
    if ("future")
        return " saw a flying saucer and descided they wanted do be an alien.";
    else if ("colonial")
        return " just got off the the Mayflower and descided they wanted to eat some turkey.";
    else if ("roman")
        return " are taking a break after a fierce battle with the Romans.";
    else if ("medieval")
        return " saved the princess in shining armor after slaying the dragon.";
    else if ("fail")
        return " just got an F on their exam.";
    else
        return " just got an F on their test.";            
}
trace (b+c);
trace(intro(sum, friend(d, a)) + body(year(b, c)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...