C# İnt İle Int32
-
Hocalar, çok basic bir soru sormak istiyorum yazılım bilgim yok. anlatırken giriş seviyesinde olursa sevinirim :)
başlattığım proje konsol uygulaması
variable tanımlıyorum " int Rk1, Rk2, Rk3 ü çağırıp ekrana 1 rakam girdireceğimi farzedin.
burada Rk1, Rk2, Rk3 ü ben zaten int olacak diyorum
alt rafta Console.WriteLine derken niçin Tekrar int bir değişkeni yani yukarıda int olacak dediğim variable'ı tekrar Int32 ye neden tekrar convert ediyorum. önceden Rk1, Rk2, Rk3 double yada string bir değer demedimki! int dedim
neden Int rakamsal bir değer dönsün dediğim şeye tekrar bu rakam dönsün diyorum = niçin convert.ToInt32 diyeyim?
mantığını anlayamadım.
-------------------------------------------------
using System;
siyahbereli tarafından 01/Ara/17 08:43 tarihinde düzenlenmiştir
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace App7
{
class Program
{
static void Main(string[] args)
{
//sistem bana 3 tane rakam soracak, Girdiğim rakamları toplayacak.
//Sonucu birinci tanımladığım rakama bölüp 5 ile çarpacak.
//Muhteşem ! birinci Sayı: x ikinci sayı: x Üçüncü Sayı: x Doğrultusunda Bölüm Sonuç:x
int Rk1, Rk2, Rk3;
double BolumSonuc, Sonuc;
Console.WriteLine("Lutfen birinci rakami giriniz.");
Rk1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Lutfen ikinci rakami giriniz.");
Rk2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Lutfen ucuncu rakami giriniz.");
Rk3 = Convert.ToInt32(Console.ReadLine());
int ToplamSonuc = Rk1 + Rk2 + Rk3;
BolumSonuc = (Double)ToplamSonuc / (Double)Rk1;
Sonuc = BolumSonuc * 5D;
String Cikti = String.Format(" Muhtesem ! Birinci Sayi: {0} ikinci Sayi: {1} Ucuncu Sayi {2}: dogrultusunda Bolum Sonuc: {3} Sonuc: {4} ", Rk1, Rk2, Rk3, BolumSonuc, Sonuc);
Console.WriteLine(Cikti);
Console.ReadLine();
}
}
} -
Convert.ToInt32(Console.ReadLine());
burada olan şey senin int olarak tanımlamış olduğun değişkene ekranda yazdığın her ner ise onu int olarak convert edip değikene vermesidir. Hatta ve hatta sen bu şekilde ekrana sayı değilde harf yazarsan exception alırsın :)
int Rk1;
int.TryParse(Console.ReadLine(), out Rk1);
bu şekilde yap.
-
AdReNaLiNe bunu yazdı
Convert.ToInt32(Console.ReadLine());
burada olan şey senin int olarak tanımlamış olduğun değişkene ekranda yazdığın her ner ise onu int olarak convert edip değikene vermesidir. Hatta ve hatta sen bu şekilde ekrana sayı değilde harf yazarsan exception alırsın :)
int Rk1;
int.TryParse(Console.ReadLine(), out Rk1);
bu şekilde yap.
Yani yukarıda variable tanımlarken ben int olacak dedim. onunla bitmiyor iş ha? onumu demek istiyorsun mecburen aşağıyada girilen değer Int32 olarak dönsün diyoruz onu şimdi anladım sağolda. asıl kafama oturmayan şey kodun crash olması değil ya da doğru yazılması değil int olarak tanımladığım bir değer adam zaten rakam girecek niye tekrar Int32 ye konvert ediyoruz
yani ben niçin aşağıdaki yaptığım kod gibi yazamıyorum
int Rk1,
double BolumSonuc, Sonuc;
Console.WriteLine("Lutfen birinci rakami giriniz.");
int Rk1 = (Console.ReadLine()); // böyle yazarsam derleyici bana illa bunu çevireceksin diyor. ya kardeşim int değişkeni zaten rakam yazılan bir değişken değilmi ? neden tekrar In32 ye çeviriyorum ?? -
Hocam Console.ReadLine() geriye string üreten bir fonksiyon.
dolayısı ile Console.ReadLine() ile klavyeden aldığın bir değişken string türünden olacaktır.
eğer Convert.ToInt32 ile türünü integer yapmazsan int bir değişkene string bir değişken tanımlamaya çalışmış olursun.
o yüzden bu tanımlamayı yapıyorsun.
-
DuPi bunu yazdı
Hocam Console.ReadLine() geriye string üreten bir fonksiyon.
dolayısı ile Console.ReadLine() ile klavyeden aldığın bir değişken string türünden olacaktır.
eğer Convert.ToInt32 ile türünü integer yapmazsan int bir değişkene string bir değişken tanımlamaya çalışmış olursun.
o yüzden bu tanımlamayı yapıyorsun.
Hocam başına Rk1 dedim ya? yukarıya bakmıyormu Rk1 variableda bu adam int demiş ha demekki burası int olacak demiyormu derleyici ?? anlayamadım şu mantığı ya
-
DuPi bunu yazdı
Hocam Console.ReadLine() geriye string üreten bir fonksiyon.
dolayısı ile Console.ReadLine() ile klavyeden aldığın bir değişken string türünden olacaktır.
eğer Convert.ToInt32 ile türünü integer yapmazsan int bir değişkene string bir değişken tanımlamaya çalışmış olursun.
o yüzden bu tanımlamayı yapıyorsun.
ilave olarak TryParse kullan dememdeki sebepte ConsoleReadLine(); sen ne girersen gir sana string döneceği için o dönen stringin rakam olup olmadığını parse etmeyi dener. Rakamsa alır int değişkenine verir değilse zaten 0 olur.
-
DuPi bunu yazdı
Hocam Console.ReadLine() geriye string üreten bir fonksiyon.
hocam şöylemi demek istiyorsun. Console.ReadLine() yazdığında yukarıdaki değişken ne olursa olsun string döner.? bu yüzden başına Int32 koyuyoruz ? niçin int32 de sadece int değil dersek sanrıım string bir değer int dönmüyor diyeceksiniz inşallah doğru anlamışımdır. ?
-
problem şurda senin klavyeden okuduğun değer her zaman string türündedir.
senin ürettiğin değişkenin türünü sen bilip klavyeden okuduğun stringi o türe çevirmen lazım.
fonksiyonlar bölümüne gelince daha iyi anlayacaksın.
public static string ReadLine()
-
siyahbereli bunu yazdıDuPi bunu yazdı
Hocam Console.ReadLine() geriye string üreten bir fonksiyon.
hocam şöylemi demek istiyorsun. Console.ReadLine() yazdığında yukarıdaki değişken ne olursa olsun string döner.? bu yüzden başına Int32 koyuyoruz ? niçin int32 de sadece int değil dersek sanrıım string bir değer int dönmüyor diyeceksiniz inşallah doğru anlamışımdır. ?
int32, int16, int64 kullanabilirsin bu alacağın int değerinin boyutu ile alakalı.
şöyle tekrar söyleyeyim.
sen int türünde bir değişken tanımladın.
klavyeden değer vermek istedin.
fakat bir saniye klavyeden okunan tüm değerler string türündedir!
o zaman onu int türüne dönüştürmen gereklidir.
işte o zaman Convert kullanman gerektiğini anlıyorsun.
@AdReNaLiNe dediği olayda şu sen a harfine bassanda bunu int türüne çevirmeye çalışacak bazı dille bunu 65-97 olarak alır ama maalesef c# Convert hatası verecektir.
o yüzden @AdReNaLiNe nin verdiği kodu kullanmak daha mantıklı.
-
DuPi bunu yazdısiyahbereli bunu yazdıDuPi bunu yazdı
Hocam Console.ReadLine() geriye string üreten bir fonksiyon.
hocam şöylemi demek istiyorsun. Console.ReadLine() yazdığında yukarıdaki değişken ne olursa olsun string döner.? bu yüzden başına Int32 koyuyoruz ? niçin int32 de sadece int değil dersek sanrıım string bir değer int dönmüyor diyeceksiniz inşallah doğru anlamışımdır. ?
int32, int16, int64 kullanabilirsin bu alacağın int değerinin boyutu ile alakalı.
şöyle tekrar söyleyeyim.
sen int türünde bir değişken tanımladın.
klavyeden değer vermek istedin.
fakat bir saniye klavyeden okunan tüm değerler string türündedir!
o zaman onu int türüne dönüştürmen gereklidir.
işte o zaman Convert kullanman gerektiğini anlıyorsun.
@AdReNaLiNe dediği olayda şu sen a harfine bassanda bunu int türüne çevirmeye çalışacak bazı dille bunu 65-97 olarak alır ama maalesef c# Convert hatası verecektir.
o yüzden @AdReNaLiNe nin verdiği kodu kullanmak daha mantıklı.
yani benim yukarıdaki basic koda istinaden 1000 tane değişkende tanımlamış olsam kullanıcı bir rakam gireceğinde o rakam string olarak bana dönecek, bende bana rakam dönsün istiyorsam direk int diyemiyorum mutlaka Int32,64 gibi bir değişkene konvert etmek zorundayım.
Şimdi oturdu eyvallah. ben derleyicinin yorumlamasını (yukarıda int bir değişken dedim oraya bakar falan diye) kafamdan uydurmuş bulunuyorum vesselam.
bundan sonra kod yazarken klavyeden gelecek veri her zaman string bir değer olarak düşüneceğim. ve her zaman konvert edeceğim. şeklinde düşüneceğim?
-
siyahbereli bunu yazdıDuPi bunu yazdısiyahbereli bunu yazdıDuPi bunu yazdı
Hocam Console.ReadLine() geriye string üreten bir fonksiyon.
hocam şöylemi demek istiyorsun. Console.ReadLine() yazdığında yukarıdaki değişken ne olursa olsun string döner.? bu yüzden başına Int32 koyuyoruz ? niçin int32 de sadece int değil dersek sanrıım string bir değer int dönmüyor diyeceksiniz inşallah doğru anlamışımdır. ?
int32, int16, int64 kullanabilirsin bu alacağın int değerinin boyutu ile alakalı.
şöyle tekrar söyleyeyim.
sen int türünde bir değişken tanımladın.
klavyeden değer vermek istedin.
fakat bir saniye klavyeden okunan tüm değerler string türündedir!
o zaman onu int türüne dönüştürmen gereklidir.
işte o zaman Convert kullanman gerektiğini anlıyorsun.
@AdReNaLiNe dediği olayda şu sen a harfine bassanda bunu int türüne çevirmeye çalışacak bazı dille bunu 65-97 olarak alır ama maalesef c# Convert hatası verecektir.
o yüzden @AdReNaLiNe nin verdiği kodu kullanmak daha mantıklı.
yani benim yukarıdaki basic koda istinaden 1000 tane değişkende tanımlamış olsam kullanıcı bir rakam gireceğinde o rakam string olarak bana dönecek, bende bana rakam dönsün istiyorsam direk int diyemiyorum mutlaka Int32,64 gibi bir değişkene konvert etmek zorundayım.
Şimdi oturdu eyvallah. ben derleyicinin yorumlamasını (yukarıda int bir değişken dedim oraya bakar falan diye) kafamdan uydurmuş bulunuyorum vesselam.
bundan sonra kod yazarken klavyeden gelecek veri her zaman string bir değer olarak düşüneceğim. ve her zaman konvert edeceğim. şeklinde düşüneceğim?
Hocam ekrana yazılan veya ekrandan alınan her giriş derleyiciye göre string dir. Çünkü bunun bir kurtarımı yok. Kullanıcı klavye üzerinde bulunan her karakteri yazabilir. Bu sebeple sen int istiyorsan bunu senin ayarlaman gerekiyor.