0

文字列としてのユーザー入力を2進数に変換することを目的とした関数がいくつかあります。これは、私が取り組んでいる基本的な「アセンブラ」プログラムの一部です。これが私のコードです:

    function generateBinaryNumber(inputValue) //only works for hash!
{
    var number;

    if(containsHash(inputValue) != -1)
    {
        number = getNumberFromString(inputValue);
    }

    return decimalToBinary(number);
}

function containsHash(number) //Working!
{
    var n = number.indexOf('#');
    return n;
}

function getNumberFromString(mixedInput) //Working!
{
    return (mixedInput.replace('#',''));
}

function decimalToBinary(decimal) //Working!
{
    decimal = parseInt(decimal);
    return decimal.toString(2);
}

たとえば、ユーザーが「5」の値を入力すると、関数はNaNを返しますが、#5を指定すると、機能します。101が返されます。私はプログラミングとJavascriptに不慣れですが、誰かが私を正しい方向に向けることができれば、それは素晴らしいことです。ありがとう!

4

1 に答える 1

0

ない場合は入力を渡していない#

function generateBinaryNumber(inputValue) //only works for hash!
{
    var number; //number is not set

    if(containsHash(inputValue) != -1) 
    {
        //number is set here, but only if the if statement is true
        number = getNumberFromString(inputValue);
    }
    //if containsHash was false, number is undefined
    return decimalToBinary(number);
}

var number=inputValue;あなたはそれを宣言するときに言いたいだけです

補足として、基数引数をparseIntに追加する必要があります(のようにparseInt(decimal,10))。そうしないと、入力が"010"16進数のように扱われ、誤って解析されます。

于 2013-03-27T01:06:04.487 に答える