1

チュートリアルを使用して、銀行口座が目標額に達するまでにかかる年数を計算する簡単なアプリを作成しています。

私は「If」ステートメントを使用しようとしているので、その人の開始残高が目標額よりも多い場合、「あなたの残高は目標額よりも大きい」と出力されますが、これをコードに書き込むと常に出力されます上記は、ユーザーが入力した金額に関係なく。

コードは次のとおりです。

        double balance, interestRate, targetBalance; //creating three doubles

        Console.WriteLine("What is your current balance?"); //writing to the console
        balance = Convert.ToDouble(Console.ReadLine()); //reading what the user inputs & converting it to a double

        Console.WriteLine("What is your current annual interest (in %)?");
        interestRate = 1 + Convert.ToDouble(Console.ReadLine()); //same as above

        Console.WriteLine("What balanec would you like to have?");
        targetBalance = Convert.ToDouble(Console.ReadLine()); //same as above

        int totalYears = 0; //creates an int variable for the total years

        do
        {
            balance *= interestRate; //multiplying balance x interest rate
            ++totalYears; // adding 1 to the total years
        }
        while (balance < targetBalance); //only do the above when balance is less than target balance


        if (balance < targetBalance)
        {
            Console.WriteLine("In {0} year{1} you'll have a balance of {2}.", totalYears, totalYears == 1 ? "" : "s", balance); //writing the results to the console
        }
        else if (targetBalance < balance)
        {
            Console.WriteLine("Your balance is bigger than the target amount");
        }
        Console.ReadKey(); //leaving the results there until the user inputs a key
4

3 に答える 3

6

do-whileループが終了する唯一の方法は、残高が>=目標残高になったときです。このため、最初のifステートメントが に評価されることはありませんtrue

ループtargetBalance < balanceに入る前に、おそらくチェックを行いたいでしょう。do-while残高が目標よりも多い場合は、最初からやり直します。そして、ループの後、'In x years...' ダイアログの周りで if チェックを行う必要はありません。

于 2012-11-10T00:21:24.737 に答える
1

ここではうまく機能します。ただし、まず残高、targetBalance を確認してください。それらが等しい場合に何が起こるか、あなたは気づきませんでした。

于 2012-11-10T00:30:46.713 に答える
0

私はあなたがこれを望んでいると思います...

double balance, interestRate, targetBalance; //creating three doubles

Console.WriteLine("What is your current balance?"); //writing to the console
balance = Convert.ToDouble(Console.ReadLine()); //reading what the user inputs & converting it to a double

Console.WriteLine("What is your current annual interest (in %)?");
interestRate = 1 + Convert.ToDouble(Console.ReadLine()); //same as above

Console.WriteLine("What balanec would you like to have?");
targetBalance = Convert.ToDouble(Console.ReadLine()); //same as above

int totalYears = 0; //creates an int variable for the total years
if (balance < targetBalance)
{
    do
    {
        balance *= interestRate; //multiplying balance x interest rate
        ++totalYears; // adding 1 to the total years
    }
    while (balance < targetBalance); //only do the above when balance is less than target balance
        Console.WriteLine("In {0} year{1} you'll have a balance of {2}.", totalYears, totalYears == 1 ? "" : "s", balance); //writing the results to the console
    }
 }
 else if (targetBalance < balance)
 {
     Console.WriteLine("Your balance is bigger than the target amount");
 }
 Console.ReadKey(); //leaving the results there until the user inputs a key
于 2012-11-10T21:04:13.823 に答える