質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET Web API

ASP.NET Web APIはブラウザやモバイル機器のようなクライアント向けのHTTPサービスを構築するフレームワークです。Microsoft .NET Frameworkがベースになっており、RESTfulサービスを構築するには理想的です。

Q&A

0回答

1488閲覧

C#で電卓を作成しています。表示に関してのご質問です。

退会済みユーザー

退会済みユーザー

総合スコア0

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET Web API

ASP.NET Web APIはブラウザやモバイル機器のようなクライアント向けのHTTPサービスを構築するフレームワークです。Microsoft .NET Frameworkがベースになっており、RESTfulサービスを構築するには理想的です。

0グッド

0クリップ

投稿2022/04/26 06:30

編集2022/04/26 07:23

IT未経験者です。
研修でC#を使い電卓の作成をしています。
どうしても分からないところがあり、どなたか教えていただけると助かります。分からないところとして、
結果のみResultTextに表示しており、もう一つTextBoxを追加し途中の計算式も表示させたいです。
(イメージとしてwindowsの電卓アプリのような動作にしたい。)
(まだ二つ目のTextBoxは追加していません。四則演算のイベント内に記述するのはわかるのですが、中々、上手くいきません。)

長くなりますがコードを載せますので是非、教えていただきたいです。(コードのおかしい部分などもご指摘ください。)
補足として、環境 VisualStdio ASP.NET Webアプリケーション(.NET Framwork) Webフォーム.aspx で作っています。
上記環境だと変数の値がページロードで0になるので、HiddenFieldを使って値を保持しています。

public partial class DendroForm : System.Web.UI.Page { /// <summary> /// 値の追加、判定に使用 /// </summary> const string ZERO = "0"; /// <summary> /// 小数点の追加、判定に使用 /// </summary> const string DECIMAL_POINT = "."; /// <summary> /// 演算子を判定するのに使用 /// </summary> const string PLUS = "+"; const string MINUS = "-"; const string MUL = "×"; const string DIV = "÷"; /// <summary> /// =ボタンが が押されたかの判定に使用 /// </summary> const string EQUAL = "="; /// <summary> /// Cボタンが押されたかの判定に使用 /// </summary> const string CLEAR = "C"; /// <summary> /// CEボタンが押されたかの判定に使用 /// </summary> const string CE = "CE"; /// <summary> /// 桁数制限の設定に使用 /// </summary> const string NUM_DIGITS = "{0:#,0.###############}"; /// <summary> /// 入力制限に使用 /// </summary> const int NUM_LENGTH = 15; protected void Page_Load(object sender, EventArgs e) { } /// <summary> /// 数値の入力イベント処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Num_Click(object sender, EventArgs e) { Button nbtn = (Button)sender; // Hnum → 入力された値を格納 // 入力できる桁数を制限 if (Hnum.Value.Length <= NUM_LENGTH) { // Hnumの値が0か判定 if(Hnum.Value == ZERO) { Hnum.Value = nbtn.Text; } else { Hnum.Value += nbtn.Text; } } // Hnumの値を表示 ResultText.Text = string.Format(NUM_DIGITS, decimal.Parse(Hnum.Value)); } /// <summary> /// 小数点ボタンのイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Dot_Click(object sender, EventArgs e) { // Hnumに小数点があるか判定 if (Hnum.Value.Contains(DECIMAL_POINT)) { return; } else { // Hnumに値があるか判定 if (Hnum.Value == string.Empty) { Hnum.Value = ZERO + DECIMAL_POINT; } else { Hnum.Value += DECIMAL_POINT; } // Text.Boxへの表示 ResultText.Text = string.Format(NUM_DIGITS, decimal.Parse(Hnum.Value)) + DECIMAL_POINT; } } /// <summary> /// 四則演算のイベント処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Calculation(object sender, EventArgs e) { Button cabtn = (Button)sender; decimal num = decimal.Parse(Hresult.Value); decimal num2; try { // Hnum(入力された値)の値の判定 if (Hnum.Value != string.Empty) { // Henzanshiの値と同じ演算子の計算 num2 = decimal.Parse(Hnum.Value); if (Henzanshi.Value == PLUS) { Hresult.Value = (num + num2).ToString(); } else if (Henzanshi.Value == MINUS) { Hresult.Value = (num - num2).ToString(); } else if (Henzanshi.Value == MUL) { Hresult.Value = (num * num2).ToString(); } else if (Henzanshi.Value == DIV) { Hresult.Value = (num / num2).ToString(); } else if (Henzanshi.Value == string.Empty) { Hresult.Value = num2.ToString(); } // Hnum2に入力されている値を格納 Hnum2.Value = Hnum.Value; } else { // イコールが連続で押されたとき if (cabtn.Text == EQUAL) { // Henzsnshi2の値と同じ演算子の計算 num2 = decimal.Parse(Hnum2.Value); if (Henzanshi2.Value == PLUS) { Hresult.Value = (num + num2).ToString(); } else if (Henzanshi2.Value == MINUS) { Hresult.Value = (num - num2).ToString(); } else if (Henzanshi2.Value == MUL) { Hresult.Value = (num * num2).ToString(); } else if (Henzanshi2.Value == DIV) { Hresult.Value = (num / num2).ToString(); } } } // 押された演算子を格納 Henzanshi.Value = cabtn.Text; Keisan.Text = Keisan.Text + Hnum.Value; Hnum.Value = string.Empty; if (Hkeisanflag.Value == "true") { string str = Keisan.Text = Keisan.Text.Remove(Keisan.Text.Length - 1); Keisan.Text = str + Henzanshi.Value; } else { Keisan.Text += Henzanshi.Value; Hkeisanflag.Value = "true"; } // 格納された演算子が = だった場合の判定 if (Henzanshi.Value == EQUAL) { Henzanshi.Value = string.Empty; } else { Henzanshi2.Value = Henzanshi.Value; } // 計算結果の表示 ResultText.Text = string.Format(NUM_DIGITS, decimal.Parse(Hresult.Value)); // Hnum(入力された値)をリセット Hnum.Value = string.Empty; } // 0除算エラー処理 catch (DivideByZeroException ex) { ResultText.Text = ex.Message; Hresult.Value = ZERO; Henzanshi.Value = string.Empty; Henzanshi2.Value = string.Empty; } // decimal型のオーバーフロー処理 catch(OverflowException ex) { ResultText.Text = ex.Message; Hresult.Value = ZERO; Henzanshi.Value = string.Empty; Henzanshi2.Value = string.Empty; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/04/26 07:01

研修なら教える人がいるんじゃないですか? ここで聞いていいって言われました?
Zuishin

2022/04/26 08:14

質問を編集したのに返事がないということは、まあそういうことですね。
episteme

2022/04/26 08:54

あなたは自分の質問に「御」を付けますか。
退会済みユーザー

退会済みユーザー

2022/04/26 11:19

完成している ASP.NET Web Forms アプリを与えられて、追加機能として途中の計算式を表示する TextBox の実装を研修の課題として与えられたのでしょうか? で、お手上げなので丸投げしたという感じがするのですが。 研修の課題というところは見なかったことにしても、こういう丸投げはダメです。一度読んでください→ https://teratail.com/help/question-tips 特に以下のあたり: 人に質問をするには、自分が何を尋ねたいかを知っている必要があります。これは、「自分が今『何がわからないのか』がわかっていて、言語化できている」ということです。一見簡単なようですが、実はとても難しいことです。そしてこの工程が抜けていると、 (1) 「どのように人に尋ねればいいのか」、「どのような情報を提示すべきか」がわからない為、正しい質問ができない (2) 質問が他のユーザーに正しく伝わらなかったり、聞き方が大雑把になりすぎたため他のユーザーから見た時に丸投げの質問・作業依頼だと受け取られてしまう
退会済みユーザー

退会済みユーザー

2022/04/26 11:27

ご指摘ありがとうございます。 このソースコードは自分で書きました。 途中式を表示させると言うところがどうしてもわからなくて、質問させていただきました。
退会済みユーザー

退会済みユーザー

2022/04/26 11:54

> このソースコードは自分で書きました。 ならば追加機能の実装も自力でできると思います。自力で頑張ってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問