PDA

View Full Version : خطا در اجرای برنامه جمع دو عدد



hkhalaj
یک شنبه 16 تیر 1392, 10:51 صبح
سلام من کدهای زیر را که مربوط به جمع دو عدد هست عینا از توی کتاب نوشتم ولی به علامت + خطا میگیره. ویژوالم هم نسخه 2010 هست.ممنون از راهنمایی شما.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "Enter a";
label2.Text = "Enter b";
label3.Text = "Enter Password";
label4.ResetText();
label1.AutoSize = true;
label2.AutoSize = true;
label3.AutoSize = true;
label4.AutoSize = true;
textBox3.PasswordChar = '*';
}

private void Add_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(textBox1.Text);
int b = Convert.ToInt32(textBox2.Text);
int c = a + b;
label4.Text = a.ToString() +"+"+ b.ToString +"="+ c.ToString();
}
}
}

sohil_ww
یک شنبه 16 تیر 1392, 10:58 صبح
سلام من کدهای زیر را که مربوط به جمع دو عدد هست عینا از توی کتاب نوشتم ولی به علامت + خطا میگیره. ویژوالم هم نسخه 2010 هست.ممنون از راهنمایی شما.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "Enter a";
label2.Text = "Enter b";
label3.Text = "Enter Password";
label4.ResetText();
label1.AutoSize = true;
label2.AutoSize = true;
label3.AutoSize = true;
label4.AutoSize = true;
textBox3.PasswordChar = '*';
}

private void Add_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(textBox1.Text);
int b = Convert.ToInt32(textBox2.Text);
int c = a + b;
label4.Text = a.ToString() +"+"+ b.ToString() +"="+ c.ToString();
}
}
}


این کد چک کن

vistacali
یک شنبه 16 تیر 1392, 11:03 صبح
(a+"+"+b+"="+c).ToString();

YazdanRayan
یک شنبه 16 تیر 1392, 11:08 صبح
;int n1=0
int n2=0;
(n1=int.parse(text1.text;
(n2=int.parse(text2.text;
int n3=n1+n2;
()text3.text=n3.tostring;

wolf_majid
یک شنبه 16 تیر 1392, 12:01 عصر
پیغام خطایی که میده رو بگذار

ya30ien2
یک شنبه 16 تیر 1392, 12:59 عصر
مقادیر داخل textbox رو عددی وارد میکنی؟

CsharpNevisi
یک شنبه 16 تیر 1392, 13:33 عصر
private void Add_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(textBox1.Text);
int b = Convert.ToInt32(textBox2.Text);
int c = a + b;
label4.Text = a.ToString() +"+"+ b.ToString +"="+ c.ToString();
}

دوست عزیز تو داری متغیرهای a . b .c رو از نوع int تعریف میکنی .... بعد میخوایی Int32 بریزی توش ... متغییراتو از نوع Int32 تعریف کن

hkhalaj
یک شنبه 16 تیر 1392, 13:47 عصر
سلام من تصویر پیغام خطا رو ضمیمه کردم.

Mahmoud.Afrad
یک شنبه 16 تیر 1392, 13:53 عصر
یه ذره اگر دقت کنید میبینید tostring دوم پرانتز نداره!!!!!


دوست عزیز تو داری متغیرهای a . b .c رو از نوع int تعریف میکنی .... بعد میخوایی Int32 بریزی توش ... متغییراتو از نوع Int32 تعریف کن
int با Int32 فرقی نداره.

CsharpNevisi
یک شنبه 16 تیر 1392, 13:59 عصر
int با Int32 فرقی نداره.

شاید ارور این جمع به خاطر این نباشه ولی int با Int32 فرق میکنه ... !!!!
خودتونم میدونید که Int32 مقدار بیشتریو تو خودش ذخیره میکنه .. !!
من بر فرض این که دوستمون عدد بزرگیو وارد میکنه این حرفو زدم..... درواقع حدس زدم که ارور اورفلو اتفاق میوفته

بله حق با شماست دومی پرانتز نداره به tostring ها دقت نکرده بودم .. !!

hkhalaj
یک شنبه 16 تیر 1392, 14:10 عصر
البته یه مقدار از پیغام نشون داده نشده که درستش operator '+'cannot be applied هست که بقیش مشخصه.

Mahmoud.Afrad
یک شنبه 16 تیر 1392, 14:12 عصر
شاید ارور این جمع به خاطر این نباشه ولی int با Int32 فرق میکنه ... !!!!

چه فرقی دارند؟

hkhalaj
یک شنبه 16 تیر 1392, 14:12 عصر
ممنون مشکلش به خاطر همون پرانتزها بود که نذاشته بودم.

CsharpNevisi
یک شنبه 16 تیر 1392, 14:45 عصر
چه فرقی دارند؟

یکی از استادام گفته بود که از int تا int64 هرچی بریم بالاتر مقدار بیشتریو میتونیم تو متغییر ذخیره کنیم .. !!
البته گفته باشم که حرف من نبود حرف استادمون بود منم هم تاحالا امتحان نکرده بودم ... الان دیدم ظرفیتشون یکی هست .. !!
ولی int64 ظرفیتش بیشتر بود .. !!
الان فرق int با int32 واس خود منم سوال شد .. !!
کسی هست جواب بده :لبخند:

amir200h
یک شنبه 16 تیر 1392, 14:53 عصر
فرق int, int32 و یا long,int64 اینه که متغیرهای INTx قادرند بروی معماریهای غیر IBM Standard و یا پلت فرم های با ساختار متفاوت سیستم عامل از شرکت مایکروسافت هم عمل کنند ولی int,long,.. این ویژگی رو ندارند

و نکته دیگه اینکه این دو مورد برای هماهنگی بین Data Type های موجود در زبان C#‎ و اونهایی که در CTS تعریف شده اند به وجود اومده.

به اختصار میشه گفت CTS یا Common Type System تو CLR باعث میشه که همه ی زبانهایی که روی پلت فرم .NET کار می کنن، Data Type های خودشون رو از یه منبع مشترک دریافت کنند تا بعد هم بتونن توی با استفاده از CLS به ویژگی معروف قابلیت نوشتن یک برنامه به چند زبان دسترسی پیدا کنن.

توی CTS ما چیزی به اسم Integet یا Long (که در زبان VB است) و یا int یا long (که در زبان C#‎ است) وجود ندارد. اونجا فقط ما Int16، Int32، Int64 و ... رو داریم. حالا برای اینکه برنامه نویسایی که با زبانهایی مثل C یا VB کار می کردن از تغییر نام این دیتا تایپ ها گیج نشن، اومدن دیتا تایپهای قبلی رو توی همون زبان استفاده کردن، اما هر کدوم رو به یکی از دیتا تایپ های موجود در CTS نسبت دادن.

پس میشه گفت int همون Int32 است و فقط برای هماهنگی بین C#‎.NET و نسخه های قبلی اون به وجود اومده، در اصل ما Int32 داریم، نه int یا هر اسم دیگه ای که می خواهید روش بذارید.

در ضمن اکیدا توصیه شده که از دیتا تایپ های Int32 یا Int64 به جای int یا long استفاده کنید.

CsharpNevisi
یک شنبه 16 تیر 1392, 15:03 عصر
میشه یه مقدار درمورد CTS و CLR و پلت فرم توضیح بدی ؟؟ اصلا اینا چی هستن ؟

amir200h
یک شنبه 16 تیر 1392, 15:19 عصر
بحث خیلی خیلی گسترده ایه. به لینک زیر مراجعه کنید
http://clrviacsharp.ir/

sohil_ww
یک شنبه 16 تیر 1392, 15:53 عصر
کدی که گذاشتم کمک نکرد البته کد خودت بود 1 پرانتز اضافه کردم