[]
java string split
s2=s1.split("");
komutuyla oluşan s2 stringinde
s2[i]==null şeklinde bir kontrol yapamıyorum.
System.out.print(s2[i]); diyerek yazdırabiliyorum ama null kontrolü yapamıyorum
yapmam lazım zira veri yoksa hata veriyor.
ne yapayım ben?
kod şöyle:
Scanner klavye=new Scanner(System.in);
String s;
s=klavye.nextLine();
String[] s2;
s2 = s.split(" ");
int toplam=0,i;
for(i=0;i<s.length();i++){
if(s2[i]==null)
break;
else toplam+=Integer.parseInt(s2[i]);}
System.out.println(toplam);
komutuyla oluşan s2 stringinde
s2[i]==null şeklinde bir kontrol yapamıyorum.
System.out.print(s2[i]); diyerek yazdırabiliyorum ama null kontrolü yapamıyorum
yapmam lazım zira veri yoksa hata veriyor.
ne yapayım ben?
kod şöyle:
Scanner klavye=new Scanner(System.in);
String s;
s=klavye.nextLine();
String[] s2;
s2 = s.split(" ");
int toplam=0,i;
for(i=0;i<s.length();i++){
if(s2[i]==null)
break;
else toplam+=Integer.parseInt(s2[i]);}
System.out.println(toplam);
try catch yazınız, hata verdiği yeri tutunuz. olur gibi geliyor bana o şekilde.
- harmonikhakaret (01.05.13 00:24:48)
o mevzuya tam hakim değilim
başka bi yolu varsa iyi olur
başka bi yolu varsa iyi olur
- sansar111x (01.05.13 00:28:17)
muhtemelen array dışına çıkıyorsunuz.
kontrol etmeden önce i'nin s2.length'ten büyük olup olmadığını kontrol etseniz?
kontrol etmeden önce i'nin s2.length'ten büyük olup olmadığını kontrol etseniz?
- ocanal (01.05.13 00:41:22 ~ 00:41:30)
işin açığı s2.length komutu da çalışmıyor
- sansar111x (01.05.13 00:45:30)
null kontrolu olur. yapamıyorum derken kastın ne? biraz daha aciklayici olman lazim.
kodunu buraya kopyalasana bakalim
kodunu buraya kopyalasana bakalim
- crucio (01.05.13 00:46:50 ~ 00:47:16)
kodu ekledim
- sansar111x (01.05.13 00:54:06)
s.length() yazmissin s2.length olacak
- crucio (01.05.13 01:00:10)
anladığım kadarıyla aralarında boşluk bırakılarak girilen sayıları topluyorsun.
girdi = "1 2 3 4";
ise çıktı 10 olacak şekilde.
fakat for döngüsünde s.length demişsin, s2.length demen lazım, bunu dedikten sonra zaten null kontrolü yapmana gerek kalmayacak çünkü for döngüsü içinde olacağından array dışına çıkman mümkün değil.
şöyle bir şey yani.
girdi = "1 2 3 4";
ise çıktı 10 olacak şekilde.
fakat for döngüsünde s.length demişsin, s2.length demen lazım, bunu dedikten sonra zaten null kontrolü yapmana gerek kalmayacak çünkü for döngüsü içinde olacağından array dışına çıkman mümkün değil.
şöyle bir şey yani.
- ocanal (01.05.13 01:01:48)
evet düzelttim orayı.
parantezli olanla parantezsiz olanın farkı ne peki?
bu arada null kontrolu hala yapamıyorum.
parantezli olanla parantezsiz olanın farkı ne peki?
bu arada null kontrolu hala yapamıyorum.
- sansar111x (01.05.13 01:03:27)
@ocanal evet haklısınız hocam da ben hala arzu ediyorum null kontrolu yapmayı.
neden olmuyor ki?
neden olmuyor ki?
- sansar111x (01.05.13 01:05:42 ~ 01:06:02)
parantezsiz length çalışmaz, java'da String'in uzunluğu length metodu ile alınır, input parametresi yoktur. metod olduğu için parantezi var.
ayrıca null olan yani bellekte yaratılmamış bir nesnenin metodunu çağırmaya çalışırsan runtime'da nullpointerexception'ı yersin. o yüzden önce string null mı diye bak, sonra length()'i çağır. veya try-catch bloğuna koy, nullpointerexception'ı yakala, orada ona göre davran.
edit: array'de length method olmadığı için parantezsiz olacak, s2.length olacak, öyle yapınca null kontrolün de çalışıyor.
ayrıca null olan yani bellekte yaratılmamış bir nesnenin metodunu çağırmaya çalışırsan runtime'da nullpointerexception'ı yersin. o yüzden önce string null mı diye bak, sonra length()'i çağır. veya try-catch bloğuna koy, nullpointerexception'ı yakala, orada ona göre davran.
edit: array'de length method olmadığı için parantezsiz olacak, s2.length olacak, öyle yapınca null kontrolün de çalışıyor.
- samfisher (01.05.13 01:08:27 ~ 01:16:08)
sorun null kontrolünde değil, şu halinde tamamen gereksiz olsa da yine null kontrolü yapabilirsin.
ama array dışına çıkıyorsun null kontrolünden önce haliyle ArrayIndexOutofBoundsException hatası alırsın.
ideone.com (null kontrollü olanı)
edit: array dışına çıkmanın nedeni de s.length ile iterate edip s2[i] yapıyorsun.
s'in eleman sayısı s2'nin eleman sayısından fazla olduğundan s2[i] hata veriyor.
ama array dışına çıkıyorsun null kontrolünden önce haliyle ArrayIndexOutofBoundsException hatası alırsın.
ideone.com (null kontrollü olanı)
edit: array dışına çıkmanın nedeni de s.length ile iterate edip s2[i] yapıyorsun.
s'in eleman sayısı s2'nin eleman sayısından fazla olduğundan s2[i] hata veriyor.
- ocanal (01.05.13 01:10:43 ~ 01:18:11)
array dışına çıktığımda hata aldımğıma göre
array'in sonunu ancak try catch ile mi bulabilirim yani?
array'in sonunu ancak try catch ile mi bulabilirim yani?
- sansar111x (01.05.13 01:17:58)
try catch'i bu amaçla kullanmak iyi olmaz.
array'in sonunu zaten biliyorsun.
s2[s2.length-1] array'in sonuncu elemanı olur.
sona gelince özel bir şey yapmak istiyorsan,
if (i == s2.length-1) {
// aha son eleman
}
gibi bir kontrol yapabilirsin.
array'in sonunu zaten biliyorsun.
s2[s2.length-1] array'in sonuncu elemanı olur.
sona gelince özel bir şey yapmak istiyorsan,
if (i == s2.length-1) {
// aha son eleman
}
gibi bir kontrol yapabilirsin.
- ocanal (01.05.13 01:20:55)
ha evet o komutu çalıştırabilmiştik demi :)
hocam son bir soru.
array uzunluğu bulurken
s dizisi length() ile s2 dizisi length ile oluyor.
bu neden?
hocam son bir soru.
array uzunluğu bulurken
s dizisi length() ile s2 dizisi length ile oluyor.
bu neden?
- sansar111x (01.05.13 01:24:37)
Çünkü,
s bir String
s2 bir String array (String[])
string uzunluğu length() metodu ile bulunuyor.
www.tutorialspoint.com
array'lerde ise length bir metod değil data attribute.
www.tutorialspoint.com
s bir String
s2 bir String array (String[])
string uzunluğu length() metodu ile bulunuyor.
www.tutorialspoint.com
array'lerde ise length bir metod değil data attribute.
www.tutorialspoint.com
- ocanal (01.05.13 01:32:14 ~ 01:32:33)
çok teşekkürler
allah razı olsun hepinizden
yine görüşürüz ama :)
allah razı olsun hepinizden
yine görüşürüz ama :)
- sansar111x (01.05.13 01:36:35)
1