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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

Q&A

解決済

1回答

1777閲覧

計算プログラムを打ったがエラーが出て困っています

programsuru

総合スコア2

C#

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

0グッド

1クリップ

投稿2020/06/16 07:28

以下のプログラムを正しく打ったのですが、(ハンドルされていない例外)とエラーが出て、その中に(入力文字列の形式が正しくありません)という文字が表示されます。
どうやったらいいのでしょうか。
太字の中のところがおかしいので、教えてください。
なおこのプログラムは(作って覚える Visual C# 2019 デスクトップアプリ入門、秀和システム発行)という本の中にあるものを引用したものです。

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

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

private void textBox1_TextChanged(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { // 変数の宣言 int valueLeft; // 入力値1用の整数型変数 int valueRight; // 入力値2用の整数型変数 int valueAnswer; // 計算結果用整数型変数 // 値の取り込み **valueLeft = int.Parse(input1TextBox.Text); // 入力値1を整数型に変換後代入** valueRight = int.Parse(input2TextBox.Text); // 入力値2を整数型に変換後代入 // 取り込んだ値の計算 valueAnswer = valueLeft + valueRight; // 計算結果を出力 AnswerTextBox.Text = valueAnswer.ToString(); // 文字列に変換後代入 } }

}

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

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

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

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

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

YAmaGNZ

2020/06/16 07:32

どこでどのようなエラーとなるのですか?
programsuru

2020/06/16 07:35

プログラム編集画面上にある緑の▶を押すと、正しいプログラムを打っているはずなのにエラーが出るというものです。
fana

2020/06/16 07:36

Form1_Loadが実行される時点で,input1TextBox.Textはどうなっているんでしょうか?
showkit

2020/06/16 07:37

まさかとは思いますが(失礼だったらごめんなさい)入力時、全角で入力したりしてませんよね?
YAmaGNZ

2020/06/16 07:39

その本の目次をみましたが、「Chapter 6 デバッグモードで動作を確認する」を読まれるべきかと思います。 緑の▶を押して実行したら、どこでどのようなエラーが発生しているか情報が表示されます。 そういったデバッガの使い方がChapter 6に書かれていると思われます。 まずは、どのようなエラーがどこで発生しているか確認する方法を習得すべきです。
programsuru

2020/06/16 07:41

Form1_Loadの実行についてはまだプログラミングが初めてなので詳しくはわかりません。 ただし、入力時に全角で入力はしていないと思います。
dodox86

2020/06/16 07:43

input1TextBoxと言うTextBoxコントロールをFormに配置していないだけとか。正確なエラー内容をコピペして質問文中に追記しましょう。
programsuru

2020/06/16 07:45

ちなみにこのようなエラーが出ました。 遅れて書いてすいません。 (始まり) System.FormatException HResult=0x80131537 Message=入力文字列の形式が正しくありません。 Source=mscorlib スタック トレース: 場所 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) 場所 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 場所 System.Int32.Parse(String s) 場所 newkeisan1.Form1.Form1_Load(Object sender, EventArgs e) (C:\Users\yamaa\source\repos\newkeisan1\newkeisan1\Form1.cs):行 33 場所 System.Windows.Forms.Form.OnLoad(EventArgs e) 場所 System.Windows.Forms.Form.OnCreateControl() 場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 場所 System.Windows.Forms.Control.CreateControl() 場所 System.Windows.Forms.Control.WmShowWindow(Message& m) 場所 System.Windows.Forms.Control.WndProc(Message& m) 場所 System.Windows.Forms.ScrollableControl.WndProc(Message& m) 場所 System.Windows.Forms.Form.WmShowWindow(Message& m) 場所 System.Windows.Forms.Form.WndProc(Message& m) 場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 場所 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) この例外は、最初にこの呼び出し履歴 [外部コード] newkeisan1.Form1.Form1_Load(object, System.EventArgs) (Form1.cs 内) [外部コード] でスローされました (終わり)
dodox86

2020/06/16 07:48

何も入力されていないのにFormのLoad時にすぐ取り出してParseしようとしているからでは。空文字なのではないですか。
dodox86

2020/06/16 07:51

あまり細かいことを書きたくないのですが、 > 正確なエラー内容をコピペして質問文中に追記しましょう。 とコメントしました。コメント欄に追記してしまうと情報が埋もれてしまい、他に閲覧している方や回答者の方も困るので、質問に付随する情報はなるべく質問文の欄に追記しましょう。
programsuru

2020/06/16 07:51

すいませんでした。 今度から気を付けます。
guest

回答1

0

ベストアンサー

その書籍のサンプルをダウンロードして確認しましたが、本に書いてあることとは異なることを行っているようです。
多分、本には「ボタンの部分をダブルクリックしてソースを記述」といった感じのことが書いてあると予想したのですが、貴方はボタンではないフォームの部分をダブルクリックしてソースを記述したのだと思います。

本来であれば

C#

1 private void calcButton_Click(object sender, EventArgs e) 2 { 3 // 変数の宣言 4 int valueLeft; // 入力値1用の整数型変数 5 int valueRight; // 入力値1用の整数型変数 6 int valueAnswer; // 計算結果用整数型変数 7

といったようにcalcButtonボタンのClickイベントに記述するはずです。

投稿2020/06/16 07:52

YAmaGNZ

総合スコア10242

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

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

programsuru

2020/06/16 08:13

今まで間違ったところにプログラムを書いていたことに気が付きませんでした。 今度から気を付けようと思います。
YAmaGNZ

2020/06/16 08:19

C#は大文字と小文字すら別として扱われるので注意してください。 また、エラーとなる原因はdodox86さんが書いていらっしゃるとおり、input1TextBoxのTextが空っぽの為に数字に変換できない為に発生しています。 FormのLoadイベントは簡単に言うとフォームが初めて表示されるタイミングで発生し、その部分が実行されます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問