-3

委託販売員の控除後の手取り額を計算して表示するプログラムを作成してください。従業員は総売上高の 7% を総賃金として受け取ります。彼または彼女の連邦税率は 18% です。彼または彼女は、退職金プログラムに 10%、社会保障に 6% を拠出します。以下のステップ 2 で提供される処理ロジックをガイドとして使用してください。プログラムの出力は次のようになります。

週間売上を入力: 28,000
総売上: $28,000.00
総給与 (7%): $1,960.00
支払われた連邦税: $352.80
支払われた社会保障: $117.60
退職金: $196.00
控除合計: $666.40

手取り額: $1,293.60
何かキーを押すと続行します。

//これが私のコードです。入力に問題があります

        //Declarations

        int weeklySales;
        double grossPay = weeklySales * .07;
        double fedTax = grossPay * .18;
        double retirement = grossPay * .1;
        double socSecurity = grossPay * .06;
        double totDeductions = socSecurity + retirement + fedTax;
        double takeHomePay = grossPay - totDeductions;

        //Promt user for Input
        System.Console.WriteLine("What is your weekly Sales?");
        weeklySales = Console.Read();
        System.Console.ReadLine();




         //Output Display
        System.Console.Write("\nYour Weekly Sale amount is :\t\t" + weeklySales+ "\n\nGross Pay:\t\t\t\t" + grossPay+ "\n\nFed Tax \t\t\t\t" + fedTax + "\n\nRetirement\t\t\t\t"+ retirement + "\n\nSocial Security:\t\t\t" + socSecurity + "\n\nTotal Deductions:\t\t\t" + totDeductions + "\n\nMaking your take home pay:\t\t" + takeHomePay);
        System.Console.ReadLine();
4

4 に答える 4

3
  weeklySales = Console.Read();

あなたが思っていることをするつもりはありません。最初の文字の ASCII 値を返します。

その代わり:

  string weeklySalesText = Console.ReadLine();
  weeklySales = int.Parse(weeklySalesText );  // may need more processing.
于 2013-01-13T18:18:54.010 に答える
0

変数に何かを入れる前に、変数を使用して結果を計算しようとしていますが、うまくいきません。結果を計算する前に入力を行います。

于 2013-01-13T18:18:51.873 に答える
0

Console.Read()あなたが思っていることをしません。最初の新しい文字を取得し、. として返しますint。行全体を読み取るわけではありません。また、Console.ReadLine()結果に対して何もしていないため、その後の呼び出しはまったく意味がありません。

ユーザーに行を書いてもらい、その行の内容をキャプチャして、それが であるかどうかを確認しint、そうでない場合はエラーメッセージを書き込んで再試行し、そうである場合はそれを処理してもらいたいと思います。

これは次のように行われます。

while (!int.TryParse(Console.ReadLine(), out weeklySales))
{
    Console.WriteLine("Input was not a number.");
}

交換

weeklySales = Console.Read();
System.Console.ReadLine();

これで、その後、weeklySales他のすべての必要な変数を計算するために使用できます。

また、weeklySales は開始時に初期化されていないため、開始時の定義も機能しないはずです。


EDIT:私のメソッドがどのように機能するかについての簡単な説明として:あなたは を呼び出しint.TryParse(string, out int)ていfalseますtrue.

整数に解析したいのはコンソール入力であるため、最初のパラメーターはConsole.ReadLine(). weeklySalesは明らかに変換したい数値stringであり、したがってoutパラメーターとして提供されます (それが何であるかわからない場合は調べてください)。

int.TryParse返された (したがって失敗した)場合falseは、while ループを実行してユーザーに通知し、もう一度尋ねます。そうでない場合は、プログラムを続行します。

于 2013-01-13T18:21:09.380 に答える
0

適切な方法:

Int32 weeklySales = 0;

while (weeklySales.Equals(0))
{
    Console.WriteLine("What are your weekly sales?");
    String input = Console.ReadLine();

    try
    {
        weeklySales = Int32.Parse(input);
    }
    catch
    {
        Console.WriteLine("There is an error in your input, try again!");
    }
}

Double grossPay = weeklySales * .07;
Double fedTax = grossPay * .18;
Double retirement = grossPay * .1;
Double socSecurity = grossPay * .06;
Double totDeductions = socSecurity + retirement + fedTax;
Double takeHomePay = grossPay - totDeductions;

Console.Write("\nYour Weekly Sale amount is :" + weeklySales + "$\nGross Pay: " + grossPay + "$\nFed Tax: " + fedTax + "$\nRetirement: " + retirement + "$\nSocial Security: " + socSecurity + "$\nTotal Deductions: " + totDeductions + "$\nMaking your take home pay: " + takeHomePay + "$");
Console.Read();

簡単な方法:

Console.WriteLine("What are your weekly sales?");

try
{
    Int32 weeklySales = Int32.Parse(Console.ReadLine());

    Double grossPay = weeklySales * .07;
    Double fedTax = grossPay * .18;
    Double retirement = grossPay * .1;
    Double socSecurity = grossPay * .06;
    Double totDeductions = socSecurity + retirement + fedTax;
    Double takeHomePay = grossPay - totDeductions;

    Console.Write("\nYour Weekly Sale amount is :" + weeklySales + "$\nGross Pay: " + grossPay + "$\nFed Tax: " + fedTax + "$\nRetirement: " + retirement + "$\nSocial Security: " + socSecurity + "$\nTotal Deductions: " + totDeductions + "$\nMaking your take home pay: " + takeHomePay + "$");
    Console.Read();
}
catch
{
    Console.WriteLine("There is an error in input. Program will be terminated.");
}
于 2013-01-13T18:26:04.000 に答える