class Program
{
static void Main(string[] args)
{
bool run = true;
do
{
Console.WriteLine("Make a choice or type 0 to exit: ");
Console.WriteLine("1. Add 2 numbers\n2. Subtract 2 numbers\n3.Multiply 2 numbers\n4. Divide 2 numbers");
int choice = Convert.ToInt32(Console.ReadLine());
if (choice == 0)
{
run = false;
}
if(choice == 1)
{
int x, y;
Console.Write("Enter 2 numbers to Operate on: ");
x = Convert.ToInt32(Console.Read());
y = Convert.ToInt32(Console.Read());
Console.WriteLine("The Result is: {0}", Convert.ToInt32(add(x,y)));
}
}while(run);
Console.ReadKey();
}
public static int add(int x, int y)
{
return x+y;
}
public static int sub(int x, int y)
{
return x - y;
}
public static int mult(int x, int y)
{
return x * y;
}
public static double div(int x, int y)
{
return (float)x/y;
}
私はかなりC#を新しくしていますので、是正措置についてお詫び申し上げます。 問題は、実行して1を入力して2と4を入力すると、82が戻ってメニューが2回印刷されるということです。これは明らかに正しくありません。誰かがなぜこれが起こっているのか教えてくれますか?なぜ私の変換を行うのか何かがあると思いますが、言語がどう動くのかを確かめたいのですが、これはうまくいくはずです。お手伝いありがとう。C#で電卓を作ろうとしています。ここで何がうまくいかないのですか?
編集:
Make a choice or type 0 to exit:
1. Add 2 numbers
2. Subtract 2 numbers
3. Multiply 2 numbers
4. Divide 2 numbers
1
Enter 2 numbers to Operate on: 2 4
The Result is: 82
Make a choice or type 0 to exit:
1. Add 2 numbers
2. Subtract 2 numbers
3. Multiply 2 numbers
4. Divide 2 numbers
Make a choice or type 0 to exit:
1. Add 2 numbers
2. Subtract 2 numbers
3. Multiply 2 numbers
4. Divide 2 numbers
['Console.Read'](https://msdn.microsoft.com/en-us/library/system.console.read(v = vs.110).aspx)のドキュメントをお読みください。それがあなたが*期待する*ことをしていますか? (また、すでに 'int'を返すので、' add'と同様に、あなたの変換は現在全く無意味です) –
Damien、それは次の文字を読むことになっていると言います。私は2 intを入力した場合、私は書いたようにそれらをバックに読んではいけませんか? –
3文字、 '2'、スペース、および '4'を入力したように見えるので、2つの読み込みで「2」文字と空白文字が読み込まれます。 '2'、' 2'、スペース、 '4'と' 1'、続いてenter)、つまり '2241'という文字列を入力した場合、2つの読み込みで2つの' 2'文字が読み込まれます。それで、あなたが*期待しているのは? –