2012-05-07 13 views
1

私はC#を初めて使いました。私が最近取り組んでいるコンソールアプリケーションでいくつかの問題が発生しました。それらを機能させるプログラムを確立するために、販売のための手数料を計算し、最終的にmainするcalcCom、ユーザーが作った販売を得るためにC#コンソールアプリケーション - 手数料電卓 - メソッド内のメソッドを使用する方法

getsales:私は3つの方法を持ってしようとしています。

私はこれらのメソッドを互いに(in)相互作用させることに問題があります。

私はすべての販売を入力した後、プログラムはelse-statementに行き、「無効な入力」と伝えます。変数を出力することは実際には得られていないので、何の出力も期待していませんでしたが、ユーザーに各ユーザーの手数料と売り上げを伝えるプログラムが必要です。

私がこの言語に慣れていないと言ったように、言葉や言葉を誤解した場合は、私を失礼にしてください! :あなたはまた、あなたのwhileループの最後に、else block後にこのコードをコピーする必要があり

if (Letter == 'a') 
{ 
    name = name1; 
    getsales(); 
    calcComm(); 
} 
else if (Letter == 'b') 
{ 
    name = name2; 
    getsales(); 
    calcComm(); 
} 
else if (Letter == 'e') 
{ 
    name = name3; 
    getsales(); 
    calcComm(); 
} 
else 
{ 

    Console.WriteLine("Invalid entry try again"); 
    inputLetter = Console.ReadLine(); 
} 

:D

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication38 
{ 
class Program 
{ 

    public static void getsales() 
    { 
     string inputsales; 
     double total = 0; 
     double sale = 0; 

     for (int salecount = 1; salecount <= 3; ++salecount) 
     { 

      Console.WriteLine("Enter sale: "); 
      inputsales = Console.ReadLine(); 
      sale = Convert.ToDouble(inputsales); 
      total = total + sale; 
      Console.WriteLine(); 
     } 
    } 

    public static void calcComm() 
    { 
     double total = 0; 
     double comm = 0; 
     comm = total * 0.2; 

    } 


    static void Main() 
    { 
     Console.WriteLine("   Sunshine Hot Tubs \n  Sales Commissions Report\n"); 
     char Letter; 
     string name; 
     const string name1 = "Andreas"; 
     const string name2 = "Brittany"; 
     const string name3 = "Eric"; 
     string inputLetter; 

     Console.WriteLine("Please enter intial or type z to quit"); 

     inputLetter = Console.ReadLine(); 
     Letter = Convert.ToChar(inputLetter); 



     while (Letter != 'z') 
     { 

      if (Letter == 'a') 
      { 
       name = name1; 
       getsales(); 
       calcComm(); 
      } 
       if (Letter == 'b') 
       { 
        name = name2; 
        getsales(); 
        calcComm(); 
       } 
        if (Letter == 'e') 
        { 
         name = name3; 
         getsales(); 
         calcComm(); 
        } 

        else 
        { 

         Console.WriteLine("Invalid entry try again"); 
         inputLetter = Console.ReadLine(); 

        } 


     } 
    } 
} 
} 
+1

あなたは何が起こったのか、期待され、任意のエラーを教えてください。あなたが受け取ったメッセージ –

+0

アドバイスをありがとう、私は説明を変更しました。 :) –

答えて

3

私はあなたの問題はあなたがこれを必要だと思います。

Console.WriteLine("Please enter intial or type z to quit"); 

inputLetter = Console.ReadLine(); 
Letter = Convert.ToChar(inputLetter); 

また、この行をelseブロックから削除してください。それは必要ではありません。

inputLetter = Console.ReadLine(); 

おそらくコンソールにコミッションを表示することを意図していました。このように見えるためにあなたのgetsalescalcCommを変更します。

public static void getsales() 
{ 
    string inputsales; 
    double total = 0; 
    double sale = 0; 

    for (int salecount = 1; salecount <= 3; ++salecount) 
    { 

     Console.WriteLine("Enter sale: "); 
     inputsales = Console.ReadLine(); 
     sale = Convert.ToDouble(inputsales); 
     total = total + sale; 
     Console.WriteLine(); 
    } 
    calcComm(total); 
} 

public static void calcComm (double total) 
{ 
    double comm = 0; 
    comm = total * 0.2; 
    Console.WriteLine(comm); 
} 

その後Main方法からcalcCommにすべての呼び出しを削除します。

+0

私はそれをやろうとしましたが、今ではそれ以上販売を求めることが止まらない、方法自体に何か問題があると思います...あなたの助けをありがとう! –

+0

はい、私はその問題を考え出しています。すぐに解決策を掲載します。 –

+1

'Console.ReadLine'は文字列を返し、2回目の入力を取得したときには決してcharに変換しません。 'Console.ReadKey'を使うこともできます。 – earthling

0

変数 "total"は2つのメソッドにあり、定義した2つのメソッドの間で探しているデータは保持されません。つまり、getSales()メソッドの合計変数はcalcComm()メソッドとは異なります。二つの方法の

double total = 0; 

外をし、静的スコープを持つクラス内にそれを置く:

あなたは、これを移動する必要があります。 Like:

また、getSales()メソッド内で合計をゼロに再初期化します。

0

calcComm()は何もしません...

私はあなたがそれらが方法によって改変されている場合は、まだ彼らの値を取得できるように、グローバルとしてあなたの変数のいくつかを持ちたい、またはさえかもしれないと思いますそれらをメソッドに渡し、新しい値を返すようにしてください。

あなたはクラスのプログラムの内部ではなく、任意の方法の外にそれらを宣言する必要があり、グローバル変数を宣言して、他の方法では、同じ名前の変数を持っていないことを確認します