2

私はC#が初めてで、基本的な概念をほとんど読んでおらず、実際のプログラミングを学びたいと思っています。そのため、単純な電卓プログラムから始めました

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Calculator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        double num1 = 0;
        double num2 = 0;


        private void one_Click(object sender, EventArgs e)
        {
            textBox1.Text =textBox1.Text+one.Text;
        }

        private void clear_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
           // textBox1.Text = " ";
        }

        private void two_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text+two.Text;
        }

        private void three_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text+three.Text;
        }

        private void four_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text+four.Text;
        }

        private void five_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text + five.Text;
        }

        private void six_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text + six.Text;
        }

        private void seven_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text + seven.Text;
        }

        private void eight_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text + eight.Text;
        }

        private void nine_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text + nine.Text;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void add_Click(object sender, EventArgs e)
        {
            num1 = num1 + double.Parse(textBox1.Text) ;
            textBox1.Clear();

        }

        private void ten_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text + ten.Text;
        }

        private void equal_Click(object sender, EventArgs e)
        {
            num2 = num1 + double.Parse(textBox1.Text) ;
            textBox1.Text = num2.ToString();
            num1 = 0;

        }


    }
}

このコードは本に記載されており、実際に機能しているとのことです。私の 2 番目の質問は、プログラミング言語を学ぶためのこのアプローチは正しいですか? それとも、さらにいくつかのプログラムを読み続ける必要がありますか?サンプル プログラムを含む Web サイトを手伝ってくれる人がいれば、とても助かります。

4

6 に答える 6

1

文字列を double に解析できない場合double.Parseは、例外がスローされます。ただし、例外をスローする代わりに単純に false を返すため、 double.TryParseを使用することをお勧めします。

double tmp;
if(double.TryParse(textBox1.Text, out tmp))
{   
   num2 = num1 + tmp;
   textBox1.Text = num2.ToString();
   num1 = 0;
}
else
{
    //double could not be parsed from textbox
}
于 2013-06-26T11:37:21.393 に答える
1

に数字のみを入力するようにユーザーを制限する必要がありますtextboxkeydownのイベントを使用して行うことができますtextbox。入力された文字が数値であるかどうかを確認し、それをテキストボックスに保持します。これがあなたの問題の解決策です。これを見てください:

数字のみを受け入れるテキストボックスを作成するにはどうすればよいですか?

C# を学習するには、次のことをお勧めします。

C# 5.0 の概要: 決定的なリファレンス

于 2013-06-26T11:38:02.247 に答える
1

あなたの問題は、ダブルを解析しています。Parse 関数は、double を表さない文字列を解析できません。

文字列を考えてみましょう"135.42"。これは double 値に簡単に解析できます135.42。しかし、文字列が"Abc#%%@". これは double 値を表すものではなく、例外が発生する場所です。

これが初めてのプログラミング言語である場合は、新しいプログラマーとして C# の入門書を読む必要があります。

于 2013-06-26T11:35:28.900 に答える
0

ここに魔法があります。double.Parse(textBox1.Text) この関数は、文字列内の数字のみを受け入れます (カンマまたはドットは文化によって異なります)。それ以外のものを渡すと、指定された例外が発生します。解析する前に入力を検証するか、TryParse を使用します

double valueinDouble;
var success = double.TryParse(textBox1.Text), out valueinDouble)
if (success)
{
    // do the calculation here
}

TryParse には、カルチャを指定できる別の実装があります。

 var success = double.TryParse(textBox1.Text), NumberStyles.Any, new CultureInfo("en-US"), out valueinDouble)
于 2013-06-26T11:34:26.740 に答える
0

無効な引数をより適切に処理したい場合は、代わりにDouble.TryParseを使用できます。

于 2013-06-26T11:37:48.167 に答える
0

その前にdouble.Parse()、ユーザー入力を確認する必要があります。つまり、それが実際の数値であることです。

TryParse代わりにメソッドを使用することをお勧めします。

double num;

bool isNum = double.TryParse(Str, out num);

if (isNum)
{
//Calculate here
}
于 2013-06-26T11:36:48.453 に答える