2012-01-11 11 views
0

私は "ボトルドライブ"の結果を収集するプログラムを開発しています。プログラムはユーザーに1から4までの部屋番号を入力するように促し、各部屋で収集されたボトルの数を入力するように促します。ユーザーは、各部屋と収集されたボトルの数を表示するには、「quit」と入力するオプションが必要です。このコードに入力を受け入れるためにこのコードをオーバーロードするにはどうすればよいですか?

ここに私のコードはありますが、私は複数の部屋をサポートするためにプログラムを拡張するのが難しいです。

namespace BottleDrive 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     int roomNumber; 
     int numberOfBottles; 
     char quit; 

     Console.WriteLine("Enter the Room number you are in."); 
     string roomSelect = ""; 
     roomSelect = Console.ReadLine(); 
     roomSelect = int.Parse(roomSelect); 
     if (roomSelect >= 1) 
     { 
      Console.WriteLine("Enter the number of bottles collected by room one"); 
      string room1Bottles = "0"; 
      room1Bottles = Console.ReadLine(); 
      int room1 = int.Parse(room1Bottles); 
      if (room1 == 1) 
      { 
       room1Bottles += room1; 
       Console.WriteLine("Room one has " + room1 + " many bottles collected"); 
      } 
     } 
     if (Console.ReadLine() = quit) 
     { 
      Console.WriteLine("Room one has collected:" + room1Bottles + "\nRoom two has collected:" + room2Bottles + "Press space to quit"); 
      string systemExit = ""; 
      if (Console.ReadLine = "") 
      { 
       systemExit(0); 
      } 
     } 
+1

あなたが求めているものを正確に把握するのに少し問題がありますが、可能な限り問題を解決しようとしました。もっと指示された質問(私は 'x'をやるのに苦労しています)は、あなたのコードを掲示してそれを修正するように頼むよりはるかに良いので、特定の質問があれば、それは始めるのが良い場所です。 –

+1

C#の初心者であることが分かっているかもしれないことは、try and catchです。たとえば、ユーザーが整数に対応していないものを入力した場合、try catchブロックにint.Parse()をラップすることができます。アプリケーションは満足できません。 – Dan

+1

なぜこれに 'C'タグがあるのか​​分かりません。 –

答えて

3

あなたが収集したボトルの数を追跡するために(部屋数が指数を計算するために使用される)の配列を利用することができる:

int[] bottles = new int[4]; 

while (true) 
{ 
    Console.Write("Enter the room you're in: "); 
    string inputString = Console.ReadLine(); 
    if (inputString == "quit") 
     break; 
    int room = int.Parse(inputString); 

    Console.Write("Bottles collected in room {0}: ", room); 
    bottles[room - 1] = int.Parse(Console.ReadLine()); 
} 

for (int i = 0; i < bottles.Length; ++i) 
    Console.WriteLine("Bottles collected in room {0} = {1}", i + 1, bottles[i]); 

その後、ユーザーの種類たら再び配列を反復処理でき収集されたボトルの数を表示するには「quit」を入力します。

+0

クールループ、入力した番号からデータを保存するにはどうすればよいですか? – gli

+0

データは配列に格納されます。出力を表示するようにコードを更新しました。 – itsme86

+0

今私のレベルのその方法は、私は確かに盗作のために挟まれるつもりを提出する場合。しかし、私は挑戦的に知識を取り除くことができます。 – gli

0

私はあなたのコードは、単にこのためにコンパイル疑う:

string roomSelect = ""; 
roomSelect = Console.ReadLine(); 
roomSelect = int.Parse(roomSelect); 

は、解析された部屋番号を格納する整数の変数を使用します。

0

部屋ごとに1つの変数しか知りませんので、整数の配列を使用できます。この場合、4つのエントリを持つ配列が使用できます。ユーザーからの入力を受け取り、intに変換します。この番号を使用して、正しいアレイインデックスにアクセスできます。

int[] arr_rooms = new int[4]; 
Console.WriteLine("Enter room number"); 
int number = Int.Parse(Console.ReadLine()); 
Console.WriteLine("enter number of bottles"); 
int bottles = Int.Parse(Console.ReadLine()); 

arr_rooms[number - 1] = bottles; //the -1 is because arrays start at 0 

Console.WriteLine("bottles in room 1 is " + arr_rooms[0].toString()); 
0

あなたはボトルの数を格納する配列を宣言する必要があります:配列の項目から1を引いた数に0からindexdされていることも

static void Main(string[] args) 
{ 
    const int NumberOfRooms = 4; 

    int[] numberOfBottles = new int[NumberOfRooms]; 

    while (true) { 
     Console.WriteLine("Enter the Room number you are in or 'q' and <enter> to quit."); 
     string line = Console.ReadLine(); 
     if (line.ToLower().StartsWith("q")) { 
      break; 
     } 
     int roomNumber = int.Parse(line) - 1; 
     if (roomNumber >= 0 && roomNumber < NumberOfRooms) { 
      Console.WriteLine("Enter the number of bottles collected by room number " + (roomNumber + 1)); 
      line = Console.ReadLine(); 
      int bottles = int.Parse(line); 
      numberOfBottles[roomNumber] += bottles; 
      Console.WriteLine("{0} bottles collected for room number {1}", numberOfBottles[roomNumber], roomNumber + 1); 
      Console.WriteLine(); 
     } 
    } 
    Console.WriteLine(); 
    for (int i = 0; i < NumberOfRooms; i++) { 
     Console.WriteLine("{0} bottles collected for room number {1}", numberOfBottles[i], i + 1); 
    } 
    Console.WriteLine("Press any key to quit."); 
    Console.ReadKey(); 
} 

注意を。