DOBON.NET DOBON.NETプログラミング掲示板過去ログ

電卓作成について

環境/言語:[xp、 Visual Studio 2005です。]
分類:[.NET]

「.」ボタンの処理がうまくいきません。アドバイス下さい。
初心者ですが宜しくお願いします。

現状況は下記です。

Private Sub cmdNum10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNum10.Click

If txtDisp.Text.IndexOf(".") >= 0 Then
Exit Sub
End If


If EFlag = 1 Then
X = X + "."
txtDisp.Text = X
Else
Y = Y + "."
txtDisp.Text = Y
End If

End Sub
回答を着けるのにかなり情報が不足しています。

>「.」ボタンの処理がうまくいきません。
うまくいかないだけでは状況をすべて伝えたことになりません。
自分としては○○○と考えているのに、実際動かすと結果が×××となってしまうとか、
具体的にうまくいかない事象を伝えてください。


また、ソースコードをそのまま張られても、変数やコントロール、処理の内容について
まったく説明もないのであまり意味ないかと。
早速の回答ありがとうございます。

質問になっていませんでした。すみません。

Dim X As String
Dim Y As String
Dim Z As Single
Dim EFlag As Integer = 1
Dim Enzan As Integer = 0
です。

まず「・」「2」を押して「+」をクリックすると0.2になります。
その後にまた「.」「2」をクリックしても「2」と表示され、「.」がクリックできないんです。
説明が下手ですみません。
  • 題名: Re[3]: 電卓作成について
  • 著者: Blue
  • 日時: 2007/02/21 14:19:29
  • ID: 19143
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
>Dim X As String
>Dim Y As String
>Dim Z As Single
>Dim EFlag As Integer = 1
>Dim Enzan As Integer = 0
これらの変数の役割は何でしょうか?

また、ブレイクポイントをおいたりしてデバッグしてみてはどうでしょうか?
2007/02/22(Thu) 09:48:29 編集(投稿者)

■No19142に返信(ましりさんの記事)
> Dim X As String
> Dim Y As String
> Dim Z As Single
> Dim EFlag As Integer = 1
> Dim Enzan As Integer = 0
> です。

blueさんも指摘されていますが、
説明がないとEFlagやEnzanがどういう役割の変数なのか第三者にはわかりません。

(変数名自体がきちんと役割りを現せていれば、説明が無くとも意味を理解できる場合が多いので、役割のわかる変数名を付けるようにすることも大事ですが・・・)

> まず「・」「2」を押して「+」をクリックすると0.2になります。
> その後にまた「.」「2」をクリックしても「2」と表示され、「.」がクリックできないんです。
> 説明が下手ですみません。

説明が下手というより、
あなたの作っているアプリケーションについて第三者は何も知らない、
という視点が抜けています。
「電卓」と一言でおっしゃっていますが、電卓のアプリケーションだって、
いろいろな見た目、使用方法のものがあり、
どんな電卓を作っているのかさえ第三者にはわからないのです。

想像力をフルに働かせて予想してみます。
・見た目はWindows付属のcalc.exeような電卓(市販の普通の電卓のような見た目)
例えば、10.5 + 2.3を行うとした場合、
・Xが一つ目の入力値の10.5を入れるための変数
・Yが二つ目の入力値の2.3を入れるための変数
・Zが答えを入れる用?
・EFlagは現在のユーザからの入力が一つ目か二つ目のどちらかを示す変数
EFlagが1なら一つ目、それ以外なら二つ目。
・Enzanはおそらく演算子の種類(+、-、など)を区別するための変数で、
1が+、2が-などの対応付けがあるのだろう。
といったところでしょうか?

これらはフォーム全体で利用できる変数となっており、
各ボタンのClickイベントで変更を行っているのだと思います。
提示されているソースコードだけではどこがまずいか?はわかりません。
(他の部分のコードとの連携でおかしくなっているのだと思います)

X、Y、Z、EFlag、Enzan、txtDisp.Textを変更する箇所がたくさんあると思いますが、
そのすべての場所で、Debug.WriteLineメソッドを使って、
これらの変数の値を表示するようにしてみてください。
そして、それらの変数の状態をつぶさに確認し、
あなたの想定している状況と違う箇所を見つけてください。それで解決できると思います。(こういう作業をデバッグといいます)
これはあなたにしかできませんので、がんばってください。

>まず「・」「2」を押して「+」をクリックすると0.2になります。
>その後にまた「.」「2」をクリックしても「2」と表示され、「.」がクリックできないんです。

というコメントから特に注目すべき点は、txtDisp.Textの中身でしょう。

> If txtDisp.Text.IndexOf(".") >= 0 Then
> Exit Sub
> End If

何らかの理由でここに引っかかっているために
「.」が入力できないのでしょう。
  • 題名: Re[3]: 電卓作成について
  • 著者: けい
  • 日時: 2007/02/23 9:44:08
  • ID: 19152
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No19142に返信(ましりさんの記事)
txtDisp.Textではなく、
XとYの中身に「.」があるかどうかで判断すれば良いのでは無いでしょうか?

DOBON.NET | プログラミング道 | プログラミング掲示板