とりこらぼ。

Learn from yesterday,
live for today,
hope for tomorrow.

目次

Blog 利用状況

ニュース

プロフィール

  • 名前:とりこびと
    とるに足らない人間です。

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

ひとりでんたく。- Visual Basic で電卓つく~る。その2 -

ひとりでんたく。- Visual Basic で電卓つく~る。その1 -←前回。

前回のあらすじ。

こんなペースで間に合うのかな?

前回は、計算結果や入力した内容などの表示するモノを格納するプロパティとして、DisplayText プロパティ をつくりました。それだけです。(←こっちがあらすじ。)

じゃ、つぎー!


数字のとこつく~る!


というわけ(?)で、数字入力のとこをつくります。入力する数値を引数で受け取って処理するって感じかな?Calculator クラスに InputNumber メソッドを追加しました。

Public Sub InputNumber(ByVal number As Decimal)


End Sub

さてさて、InputNumber メソッドの中身を・・・のその前に!


なんでもかんでも入力されたらこまるぢゃん!


なので、入力していい数値はちゃんと把握しておかないと・・・。入力していい数値は、

1, 2, 3, 4, 5, 6, 7, 8, 9, 0

ですね。なので、こんなの用意してみました。

Private Shared _validInputNumbers As Decimal() = {1D, 2D, 3D, 4D, 5D, 6D, 7D, 8D, 9D, 0D}
Public Shared ReadOnly Property ValidInputNumbers() As System.Collections.ObjectModel.ReadOnlyCollection(Of Decimal)
    Get
      Return New System.Collections.ObjectModel.ReadOnlyCollection(Of Decimal)(Me._validInputNumbers)
    End Get
End Property

この ValidInputNumbers プロパティ をつかって有効な入力値かどうか判断するようにしちゃいますね。


で、電卓で、たとえば1→2→3と入力すると、0が表示されていたのが1になり、12となり、123となるわけですので、こんな感じ↓になりました。

Public Sub InputNumber(ByVal number As Decimal)

    ' 入力しちゃらめぇなのを入力したらなんにもしないの。     If Not Calculator.ValidInputNumbers.Contains(number) Then
        Exit Sub
    End If
    ' DisplayText が、     ' 0 のときは入力された数字に置き換えるの。     ' 0 じゃないときは入力された数字をつなげるの。     If Me.DisplayText = "0" Then
         Me.DisplayText = number.ToString
    Else
        Me.DisplayText &= number.ToString
    End If
End Sub

というわけで、今回はここまで。こなくそー!!



はぁ・・・今日も湿度たか~い。

投稿日時 : 2007年7月4日 8:45

Feedback

# re: ひとりでんたく。- Visual Basic で電卓つく~る。その2 - 2007/07/04 9:23 中博俊

0のときに0をいれても0じゃぁ。。。

# re: ひとりでんたく。- Visual Basic で電卓つく~る。その2 - 2007/07/04 9:46 片桐

0は0だよね……1→0→2=>102だよね?
湿度たかいよね……テンションも高いよね……

# re: ひとりでんたく。- Visual Basic で電卓つく~る。その2 - 2007/07/04 10:49 とりこびと

中さん、片桐さん、コメントありがとうございます。

ん?どっかまちがってるんですね。orz
見直してきます・・・。


# re: ひとりでんたく。- Visual Basic で電卓つく~る。その2 - 2007/07/04 11:03 επιστημη

10 に 0 だと 100 だけど
0 に 0 だとやっぱり 0 のまま、と。

0 に 0 のとき 00 となんのは仕様だ! ならいいけども。

# re: ひとりでんたく。- Visual Basic で電卓つく~る。その2 - 2007/07/04 13:20 とりこびと

επιστημη さん、コメントありがとうございます。

みなさんもおっしゃっておられることで、

0 が表示されてるときに、0って入力したら、
0 だろがっ!って感じで、

このコードだと、
0 が表示されてるときに、0って入力したら、
00 ってなっちゃマズくない?ってことですよね?

# re: ひとりでんたく。- Visual Basic で電卓つく~る。その2 - 2007/07/04 13:44 ぽぴ王子

> ' DisplayText が、
> ' 0 のときは入力された数字に置き換えるの。
> ' 0 じゃないときは入力された数字をつなげるの。

これを忠実にコーディングしているように見えます。

つーことは、シミュレーションしてみればいいんじゃね?

最初は "0" の状態。

パターンその1

A. "1" を入力
Me.DisplayText = "0" は True なので
Me.DisplayText = 1.ToString
が実行されるはず。
→ Me.DisplayText は "1" になる。
B. "0" を入力
Me.DisplayText = "0" は False なので
Me.DisplayText &= 0.ToString
が実行されるはず。
→ Me.DisplayText は "10" になる。

パターンその2

"0" の状態から

A. "0" を入力
Me.DisplayText = "0" は True なので
Me.DisplayText = 0.ToString
が実行されるはず。
→ Me.DisplayText は "0" になる。
B. "1" を入力
Me.DisplayText = "0" はやっぱり True なので
Me.DisplayText = 1.ToString
が実行されるはず。
→ Me.DisplayText は "1" になる。

こう読みましたが…

# re: ひとりでんたく。- Visual Basic で電卓つく~る。その2 - 2007/07/04 15:22 とりこびと

ぽぴ王子さん、コメントありがとうございます。

>> ' DisplayText が、
>> ' 0 のときは入力された数字に置き換えるの。
>> ' 0 じゃないときは入力された数字をつなげるの。

>これを忠実にコーディングしているように見えます。

はい、そのまんま書きました。

>パターンその1

1 → 0 って入力ですね。

私も 10 になります。

>パターンその2

0 → 1 って入力ですね。

私も 1 になります。


なので、困惑しています。orz

# ひとりでんたく。- Visual Basic で電卓つく~る。その3 - 2007/07/04 20:46 とりこびと ぶろぐ。

ひとりでんたく。- Visual Basic で電卓つく~る。その3 -

タイトル
名前
Url
コメント