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

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

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

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

Q&A

解決済

3回答

2387閲覧

日本のC#能力者たちさま手伝ってください

KWONYONGGI

総合スコア15

C#

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

0グッド

0クリップ

投稿2018/10/26 05:41

編集2018/10/26 05:56

こんにちわ
日本に仕事する、韓国人です。
C#に入門してから一か月です。
イメージ説明
プログラムを作るが目標です。でも

以下のエーラが出ます。

イメージ説明

*勉強したもの
1.2点の距離探す関数作りました。

2.型変換を勉強しました。

3.関数の使用方法に勉強しました。

プログラムソースです。
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;
using System.Collections;
using System.Runtime.InteropServices;
using System.Threading;

namespace MISSION9
{
public partial class Form1 : Form
{

public Form1() { InitializeComponent(); } private int num; protected double GetAB(double x, double y, double x1, double y1) //두점 사이의 거리 구하는 함수 { string xValue = textBox1.Text; x = Convert.ToDouble(xValue); //convert를 사용해서 형 변환하기 x = Convert.ToInt32(textBox1.Text);

// this.textBox1 = new TextBox();
// this.textBox1.Name = x;

string yValue = textBox2.Text; y = Convert.ToDouble(yValue); y = Convert.ToInt32(textBox2.Text); string x1Value = textBox3.Text; x1 = Convert.ToDouble(x1Value); x1 = Convert.ToInt32(textBox3.Text); string y1Value = textBox4.Text; y1 = Convert.ToDouble(y1Value); y1 = Convert.ToInt32(textBox4.Text); double distance = Math.Sqrt((x1 - x) * (x1 - x) + (y1 - y) * (y1 - y)); return (int)distance; } protected double GetBC(double x1, double y1, double x2, double y2) //DelegateFunc { string x1Value = textBox3.Text; x1 = Convert.ToDouble(x1Value); x1 = Convert.ToInt32(textBox3.Text); string y1Value = textBox4.Text; y1 = Convert.ToDouble(y1Value); y1 = Convert.ToInt32(textBox5.Text); string x2Value = textBox5.Text; x2 = Convert.ToDouble(x2Value); x2 = Convert.ToInt32(textBox5.Text); string y2Value = textBox6.Text; y2 = Convert.ToDouble(y2Value); y2 = Convert.ToInt32(textBox6); double distance1 = Math.Sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); return (int)distance1; } protected double GetAC(double x, double y, double x2, double y2) { string x2Value = textBox5.Text; x2 = Convert.ToDouble(x2Value); x2 = Convert.ToInt32(textBox5); string y2Value = textBox6.Text; y2 = Convert.ToDouble(y2Value); y2 = Convert.ToInt32(textBox6); string xValue = textBox1.Text; x = Convert.ToDouble(xValue); x = Convert.ToInt32(textBox1); string yValue = textBox2.Text; y = Convert.ToDouble(yValue); y = Convert.ToInt32(textBox2); double distance2 = Math.Sqrt((x2 - x) * (x2 - x) + (y2 - y) * (y2 - y)); return (int)distance2; } private void button1_Click(object sender, EventArgs e) { label15.Text = GetAB(distance); label16.Text = GetBC(distance1); label17.Text = GetAC(distance2); //메소드, 함수 사용법 다시 훓기 } private void pictureBox1_Click(object sender, EventArgs e) //그냥 삼각형 출력하기 위해서 한것. { Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height); // 렌더링 대상으로하는 Image 객체를 만드는 Graphics g = Graphics.FromImage(canvas); // Image 객체의 Graphics 객체를 만들 Point[] ps = { new Point (0, 0), // 직선으로 연결하는 점의 배열을 만들 new Point (190, 90), new Point (120, 140) }; g.DrawPolygon(Pens.Black, ps); // 다각형 그리기 g.Dispose(); // 리소스를 해제 pictureBox1.Image = canvas; // PictureBox1에 표시 } private void textBox1_TextChanged(object sender, EventArgs e) { //string textBox1 = xValue; //x = xValue; } } public partial class Keisan { }

}

理由をわからないです。。。
日本のC#能力者たちさま手伝ってください

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

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

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

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

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

y_waiwai

2018/10/26 05:45

コードが見にくいので、編集して、<code>ボタン、’’’の枠の中にコードを貼り付けてください
KWONYONGGI

2018/10/26 05:49

はい!!しました!
mather

2018/10/26 05:49

もしかしてエラーメッセージの内容がわからないということでしょうか?エラーメッセージが英語になったら読めるのでしょうか?
KWONYONGGI

2018/10/26 05:51

いいえ。。。エーラの内容は知りますけど、、、理解しません。。。
guest

回答3

0

private void button1_Click(object sender, EventArgs e)

{
label15.Text = GetAB(distance);

ここのdistance という変数が未定義です
以下同様

投稿2018/10/26 05:48

y_waiwai

総合スコア87749

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

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

KWONYONGGI

2018/10/26 06:01

hum....はい!ありがとうございます。
guest

0

distance,distance1,distance2という変数は、それぞれ関数GetAB,GetBC,GetACの中で定義されたローカルな変数ですから、その関数の外側からは見えません(関数GetAB,GetBC,GetACの外側からは、無いのといっしょ)

だから、「'distance'という名前は存在しません」というようなエラーになるのです。

他にも、doubleで計算したものをintにキャストするなど、すべきでないコーディングが散見されます。

投稿2018/10/26 05:51

coco_bauer

総合スコア6915

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

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

KWONYONGGI

2018/10/26 06:00

ありがとうございます。またやってみます。
KWONYONGGI

2018/10/26 06:12

じゃ、作る関数はどうやって使用しますか、、、?
guest

0

自己解決

distance,distance1,distance2という変数は、それぞれ関数GetAB,GetBC,GetACの中で定義されたローカルな変数ですから、その関数の外側からは見えません(関数GetAB,GetBC,GetACの外側からは、無いのといっしょ)

だから、「'distance'という名前は存在しません」というようなエラーになるのです。

他にも、doubleで計算したものをintにキャストするなど、すべきでないコーディングが散見されます。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

上の答弁でヒントを得ることができました。

イメージ説明

必要ないキャステイングを削除してGetAB, GetBC, GetAC内をもう一度変換しました!

ありがとうございます。

コード 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; using System.Collections; using System.Runtime.InteropServices; using System.Threading; namespace MISSION9 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected double GetAB() //두점 사이의 거리 구하는 함수 (클라스 안에 함수 만들어서 사용가능, 따로 클라스 만들 필요 없음.) { double x, y, x1, y1; string xValue = textBox1.Text; x = Convert.ToDouble(xValue); //convert를 사용해서 형 변환하기 // x = Convert.ToInt32(textBox1.Text); //double계산 한것을 int로 캐스팅 하면 안되는 코딩 string yValue = textBox2.Text; //yValue변수 안에 textBox2.text의 텍스트를 받아온다. y = Convert.ToDouble(yValue); //yValue의 값을 y에 double형으로 반환해 준다. string x1Value = textBox3.Text; x1 = Convert.ToDouble(x1Value); string y1Value = textBox4.Text; y1 = Convert.ToDouble(y1Value); double distance = Math.Sqrt((x1 - x) * (x1 - x) + (y1 - y) * (y1 - y)); //double distance변수에 두점사이의 거리를 구하는 식을 만들어 준다. //sqrt(제곱근을 반환) return (int)distance; //return 값은 int } protected double GetBC() //DelegateFunc 괄호 안에 선언 하면 안된다. { double x1, y1, x2, y2; // 이렇게 따로 함수 안에 선언을 해줘야 된다. string x1Value = textBox3.Text; x1 = Convert.ToDouble(x1Value); string y1Value = textBox4.Text; y1 = Convert.ToDouble(y1Value); string x2Value = textBox5.Text; x2 = Convert.ToDouble(x2Value); string y2Value = textBox6.Text; y2 = Convert.ToDouble(y2Value); double distance1 = Math.Sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); return (int)distance1; } protected double GetAC() { double x, y, x2, y2; string x2Value = textBox5.Text; x2 = Convert.ToDouble(x2Value); string y2Value = textBox6.Text; y2 = Convert.ToDouble(y2Value); string xValue = textBox1.Text; x = Convert.ToDouble(xValue); string yValue = textBox2.Text; y = Convert.ToDouble(yValue); double distance2 = Math.Sqrt((x2 - x) * (x2 - x) + (y2 - y) * (y2 - y)); return (int)distance2; } private void button1_Click(object sender, EventArgs e) { string str = textBox1.Text;    //str에 textbox1의 입력 값을 넣는다. (button안에서 한번더 반환해 주어야 된다. ) double aaa = Convert.ToDouble(str); //str값을 aaa에 double값으로 반환한다. string str1 = textBox2.Text; double bbb = Convert.ToDouble(str1); string str2 = textBox3.Text; double ccc = Convert.ToDouble(str2); string str3 = textBox4.Text; double ddd = Convert.ToDouble(str3); string str4 = textBox5.Text; double eee = Convert.ToDouble(str4); string str5 = textBox6.Text; double fff = Convert.ToDouble(str5); label15.Text = GetAB().ToString(); //label15에 GetAB함수를 문자열로 바꿔준다. label16.Text = GetBC().ToString(); //어차피 함수 안에서 읽어 줬기 때문에 GetAB()괄호 안에 또 지정해 줄 필요가 없다. label17.Text = GetAC().ToString(); //label16.Text = GetBC(2, 3, 1, 5); //이렇게 숫를 넣어주어야 되지만 위에 처럼 반환 값을 입력해준다. //label17.Text = GetAC(label17.Text); //메소드, 함수 사용법 다시 훓기 } private void pictureBox1_Click(object sender, EventArgs e) //그냥 삼각형 출력하기 위해서 한것. { Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height); // 렌더링 대상으로하는 Image 객체를 만드는 Graphics g = Graphics.FromImage(canvas); // Image 객체의 Graphics 객체를 만들 Point[] ps = { new Point (0, 0), // 직선으로 연결하는 점의 배열을 만들 new Point (190, 90), new Point (120, 140) }; g.DrawPolygon(Pens.Black, ps); // 다각형 그리기 g.Dispose(); // 리소스를 해제 pictureBox1.Image = canvas; // PictureBox1에 표시 } } }

投稿2018/10/26 07:12

編集2018/10/26 07:13
KWONYONGGI

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問