sigisMoNd Mesaj tarihi: Nisan 27, 2009 Konuyu açan Paylaş Mesaj tarihi: Nisan 27, 2009 vay be ne toString() metoduymus :p son ikisi daha mantikli gozukuyor tabi. return olarak "" dondurunce killanmistim aslinda ama sorunsuz calisinca dokunmadim ben de dfs Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Mayıs 3, 2009 Konuyu açan Paylaş Mesaj tarihi: Mayıs 3, 2009 yine birsey takildi aklima. simdi mesela herhangi bir stringi input olarak giricez. scanner kullanmak lazim. ancak bu girilen string uzerinde stringbufferda kullanilan string.delete(), string.append(), string.substring() gibi hazir metodlari nasil kullanabiliriz? mumkun mudur? Scanner sc = new Scanner (System.in); StringBuffer string = new StringBuffer(); string = sc.next(); anlatabilmisimdir umarim. boyle birsey denedigimde incompatible types diye hata aliyorum stringbuffer olarak seyi scannerla okumaya calistigim zaman. yani mesela girilen string input uzerinde stringbuffer metodlarini uygulamak istiyorum. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Mayıs 3, 2009 Paylaş Mesaj tarihi: Mayıs 3, 2009 StringBuffer ile String aynı şey değil. O yüzden StringBuffer türünden tanımladığın değişkenin ismini "string" yapma, kafanı karıştırır iyice. Scanner.next() sana bir string veriyor. Bu verilen string'i buffer'ın sonuna eklemek istersen StringBuffer.append(String) kullanabilirsin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Mayıs 3, 2009 Konuyu açan Paylaş Mesaj tarihi: Mayıs 3, 2009 biliyorum farkli seyler. sadece string olarak okunan seyi bir sekilde stringbuffer a cevirip stringbufferda uygulanan seyleri o okunan string uzerinde uygulayabilir miyiz diye sormustum. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Mayıs 3, 2009 Paylaş Mesaj tarihi: Mayıs 3, 2009 StringBuffer Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Mayıs 5, 2009 Konuyu açan Paylaş Mesaj tarihi: Mayıs 5, 2009 selam tekrar asagidaki daha onceden yapicam dedigim baklava desenli halinin kodu :d . . x . . . x . x . x . . . x . x . x . . . x . . bunun kodu baya uzun geldi. KISS principle uygun olarak daha kisasini yapmak mumkun mudur bunun? bir de char scan ederken ben once String okutup oradaki ilk chari aldim haliya "." disindaki simgeleri koymak icin. bunun daha cillop bir hali var midir? import java.util.*; class Tepich { public static void main (String[]args) { Scanner sc = new Scanner (System.in); int n = sc.nextInt(); String str = sc.next(); char ch = str.charAt(0); int middle = n/2; for (int y=0; y<=middle; y++) { for (int x=0; x<=n; x++) { if (x == middle-y ) { int c = x+y; if (x<=c+y) { System.out.print(ch); x++; } } else if (x == middle+y+1) { int d = x+y; if (x==n) { System.out.print(ch); } else if (x<=d+y) { System.out.print(ch + "." ); x++; } } else { System.out.print("." ); } } System.out.println(); } for (int y=1; y<=middle; y++) { for (int x=0; x<=n; x++) { if (x == y) { if (x>=y) { System.out.print(ch); x++; } } else if (x==n-y) { if (x>=y) { System.out.print(ch + "." ); x++; } } else { System.out.print("." ); } } System.out.println(); } } } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Haziran 2, 2009 Konuyu açan Paylaş Mesaj tarihi: Haziran 2, 2009 yine birkac tane sorum olucak. ... private int[] arr = new int[3]; private int curIndex = 0; private static int GROW_SIZE = 3; ... public void increaseSize() { arr = Arrays.copyOf(arr, arr.length + GROW_SIZE); } public String toString() { return Arrays.toString(Arrays.copyOf(arr, curIndex)); } Arrays.copyOf u tam olarak anlayamadim. bu hazir sunulmus birsey sanirsam. Array.copyOf(hangi array kopyalanicaksa onun ismi, kopyalarkenki genisletilme miktari) gibi birsey mi? aydinlatirsaniz sevinirim. edit: tam kodu da veriyim baska bir sorum daha olucak cunku import java.util.*; public class IntCollection { private int[] arr = new int[3]; private int curIndex = 0; private static int GROW_SIZE = 3; public void add(int value) { if(curIndex>=arr.length) { increaseSize(); } arr[curIndex] = value; ++curIndex; } public void add(int value, int pos) { while(pos >= arr.length) { increaseSize(); } arr[pos] = value; curIndex = Math.max(pos+1, curIndex); } public void increaseSize() { arr = Arrays.copyOf(arr, arr.length + GROW_SIZE); } public String toString() { return Arrays.toString(Arrays.copyOf(arr, curIndex)); } } array size'i increase etmek icin arr.length i 2 ile carptim bu hatayi aldim: .IntCollection.java:30: cannot assign a value to final variable length arr.length += GROW_SIZE; bir de add(int value) metodundaki if i while ile degistirdim kucuk geldikce 2 ile carpsin diye ama yukardaki hata yuzunden olmadi tabi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Ractamainus Mesaj tarihi: Haziran 2, 2009 Paylaş Mesaj tarihi: Haziran 2, 2009 Array.length property'sine bir değer "set" edemezsin. sadece "get" edip değeri okuyabilirsin. o yüzden kızmış. copyto metodu da o yüzden var zaten. bir array'in uzunluğunu doğrudan değiştiremediğin için, yeni bir aray kopyası yaratıp, yatırken de uzunluğunu arttırıyor. java bilmiyorum ama durum budur gibi görünüyor. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Haziran 2, 2009 Paylaş Mesaj tarihi: Haziran 2, 2009 Şimciiii... increaseSize metodunun private olması daha mantıklı olur bence. Sadece senin intern olarak array boyutunu ayarlamak için kullandığın bir metoda benziyor. İlk önce add(int value, int pos) metodunun gerçekten doğru işi yaptığından emin ol. Java API'deki collection'larda var olmayan bir index'e bir eleman eklemeyezsin. Mesela boyutu 2 olan bir listede add(e, 4) çağırırsan IndexOutOfBoundException alırsın. Bakınız: java.util.ArrayList Tabi kendi yapacağın collection'da böyle olmak zorunda değil (ama ne kadar mantıklı tartışılır, aradaki bütün elemanlar boş kalacak). Boyutu otomatik arttırmak istiyorsan şunu göz önünde bulundur: Arrays.copyOf biraz pahalı bir metod. Her çağırdığında bellekte yeni bir array için yer ayırıp içeriği kopyalıyorsun. public void add(int value, int pos) { while(pos >= arr.length) { increaseSize(); } arr[pos] = value; curIndex = Math.max(pos+1, curIndex); } Yukardaki while döngüsünde yüksek bir pos verilmişse, o pos değerine erişene kadar binlerce yeni array için yer ayırıp kopyalaman gerekebilir. O yüzden döngü içinde increaseSize metodunu çağırmak yerine tek celsede istediğin boyuta büyütebilirsin array'i. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Haziran 3, 2009 Konuyu açan Paylaş Mesaj tarihi: Haziran 3, 2009 hmm tamam tesekkur ederim tekrar. bu arada Arrays.toString(..) varmis. zamaninda kasip for schleife yle kendim [0, 1, 2, ...] haline getirmistim outputu sdf Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Haziran 3, 2009 Paylaş Mesaj tarihi: Haziran 3, 2009 Bu konunun ilk sayfasında ilk mesajımda söylemiştim onu. Grrr. X( Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Haziran 4, 2009 Konuyu açan Paylaş Mesaj tarihi: Haziran 4, 2009 evet soylemisin pardon :D Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Haziran 15, 2009 Konuyu açan Paylaş Mesaj tarihi: Haziran 15, 2009 konunun amaci (basliga bakildiginda) biraz sapti ama burdan sormaya devam ediyim javayla ilgili. simdi bu interfacelerde amaci tam olarak anlayamadim. birkac class in ortak metodlarini metodlarin ici olmadan interface olarak yaziyoruz bu ortak kullanim alani gibi birsey oluyor tamam da interface olmasa da ayni isi gormezler mi? yani ne biliyim zaten interface te yazili olan butun metodlar subclass larda var. kullanilmasinin tek amaci bu classlarda metod isimlerinin tamamen ayni olmasi midir nedir? gerci bu kez kontruktor ve diger bazi metodlarda parameter farki meydana cikiyor. biri aydinlatirsa sevinirim. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Haziran 16, 2009 Paylaş Mesaj tarihi: Haziran 16, 2009 Değişik kullanım alanları var. Anlatması zor biraz. Kodun anlaşılmasını arttırdığı için kullanılabiliyor, tasarım sırasında verilen kararların koda yansımasını belirginleştiriyor ve belki de en önemlisi inheritance kullanmadan soyutlaştırma sağlıyor. Bir class'a ait birden fazla özelliği interface'ler aracılığı ile belirtebiliyorsun. Diyelim bir oyun yazmaya karar verdin. Dragon ve Horse diye iki sınıf tanımladın. Yeni inheritance öğrenmişsin, kesinlikle kullanmalıyım dedin ve Animal diye bir üst sınıf tanımladın. Sonra aklına geldi, oyunda hayvanları evcilleştirebilelim dedin ve tame(target) diye bir metod eklemek istedin. Sorun ise: target parametresinin tipi ne olmalı? Zaten inheritance kullandığın için evcilleştiribilecek hayvanlara bir üst sınıf tanımlaman mümkün değil. Ama kalkıp Tameable diye bir interface tanımlarsın. Evcilleştiribilecek her sınıfın bu interface'i kullanmasını zorunlu tutarsın, böylece belli metodları da tanımlamak zorunda kalırlar. Sonra herhangi bir yerde tame(Tameable t) diye tanımlayarak verilen parametrenin gereksiz her özelliğini soyutlamış olursun. Senin ihtiyacın olan sadece Tameable arayüzündeki metodlar. tame metoduna verilen argüman hangi sınıftan olduğunun bir önemi yok. Başka bir örnek de Java Collections API'sinden vereyim. List interface'ini biliyorsundur. add, addAll, get, subList gibi metod signature'ları tanımlanmış. Bu arayüzü alan her liste bu metodları tanımlamak zorunda. Sen listeleri sıralayan bir metod yazmak istiyorsun diyelim. Sıralamayı yapabilmen için gereken tek şey verilen elemanın bir liste olması. imbaSort(List list) diye tanımladın. Verilen eleman ArrayList olabilir, Vector olabilir, hatta başkabirinin tanımladığı list implement eden HedoHodo diye bir sınıf olabilir. Seni ilgilendiren tek şey List arayüzünü sana sağlaması. Geri kalan her şeyi soyutlamış oluyorsun. imbaSort metodunun içinde sadece senin ihtiyacın olan metodlara erişimin oluyor. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Dwinz Mesaj tarihi: Haziran 16, 2009 Paylaş Mesaj tarihi: Haziran 16, 2009 bakayım javayla ilgili şu topic neymiş dedim ve harbiden benimde anlamadığım interface olayını şu an anlamış bulunmaktayım uheuhe. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Haziran 16, 2009 Konuyu açan Paylaş Mesaj tarihi: Haziran 16, 2009 yani inheritance kullanmadigimiz zaman interface in bir onemi kalmiyor? mesela ornegin 2 tane class yarattik. biri quadrat biri kreis olsun. simdi bu iki class in da benzer metodlari var diyelim. public class Kreis { private double radius; // Konstruktor.. getArea() { ... } getPerimeter() { ... } ... ------------------------------ public class Quadrat { private double a; // Konstruktor.. getArea() { ... } getPerimeter() { ... } ... bir de main programimiz var bu iki class in cagirildigi. bu iki class'in sadece ortak metodlari var diye ayrica bir de public interface Base { double getArea(); double getPerimeter(); } gibi bir interface yazmaya gerek var mi? yanlis anlamadiysam bu durumda yok. ama mesela bu ikisinin yanina bir de Ellipse diye yeni class yaratsaydik. Kreis da Ellipse e extend etseydi ama ayni zamanda Kreis ve Quadrat olup da Ellipse de olmayan bir metod olsaydi. simdi bu Ellipse de olmayan metod icin Kreis ve Quadrat in implement ettigi bu metodu iceren bir interface mi yazmamiz gerekirdi? dogru mu anlamisim? biraz karisik oldu sanki anlatim. anlatabilmisimdir umarim. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Haziran 16, 2009 Paylaş Mesaj tarihi: Haziran 16, 2009 Inheritance yoksa interface'in önemi yok diyemeyiz. Bazı durumlarda inheritance mı kullanmak lazım interface mi tartışılır. "xx şeklinde bir interface yazmaya gerek var mi?" tarzı sorularına gelince... bütün ortak metodlar interface olarak çıkartılmalı diye bir gereklilik yok. Verdiğin örneklerde inheritance ile bir class hierarşisi de kurabilirsin, çünkü belirgin bir "is a" ilişkisi var. Interface önemi özellikle program büyüdükçe ve projedeki kişi sayısı arttıkça artıyor. Diyelim bir metod yazıyorsun, metodunun parametresi için belli özelliklere sahip bir tipe ihtiyacın var. İhtiyacın olan metodları bir interface olarak yazarsın, metodların yapması gereken şeyler için de bir döküman hazırlarsın. Sonra da metodunu bu interface'i kullanarak tanımlarsın. Bu interface'i bir anlaşma ya da bir spesifikasyon olarak da düşünebilirsin. O interface'i başkasına verip "bana buna uyan bir class yaz" diyebilirsin. Bazı durumlarda bir interface'i kullanacak tek bir class olduğunu bilsen bile interface'i ayrıca tanımlamak mantıklı olabilir. Mesela o class'ın farklı şekilde yazılma olasılığının büyük olduğunu biliyorsan, programında tip olarak doğrudan o class'ı değil de interface'ini kullanırsın. Böylece ilerde aynı işi yapacak başka bir class yazmak istediğinde sadece o interface'i implement etmen yeterli olur. Böylece eskiden o class'ın kabul edildiği her yerde yeni class'ını da kullanabilirsin. Yani interface'leri kullanarak programın bakımını da kolaylaştırabiliyorsun. Edit: Harika bir kaynak buldum: http://www.codestyle.org/java/faq-Interface.shtml Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Haziran 16, 2009 Konuyu açan Paylaş Mesaj tarihi: Haziran 16, 2009 kaynak harikaymis cidden. tesekkurler aciklamalar icin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Ağustos 22, 2009 Konuyu açan Paylaş Mesaj tarihi: Ağustos 22, 2009 selamlar, kucuk bir sorum olacakti. Zehtausend diye bir tane zar oyunu varmis. onu yazmaya calisiyorum. benim soracagim seyin aslinda oyunun icerigiyle alakasi yok. random belirlenen sayilarla ilgili. simdi atilan zarin 1-2-3-4-5-6 sayilarindan biri olmasi lazim tabi. asagidaki benim yazdigim kod: import java.util.*; public class Zehntausend { static int range (int number, int from, int to) { Random random = new java.util.Random(); while ((number = random.nextInt()) >= from && number <= to); return number; } public static void main (String[] args) { Random random = new java.util.Random(); int w1, w2, w3, w4, w5; w1 = range(random.nextInt(), 1, 6); w2 = range(random.nextInt(), 1, 6); w3 = range(random.nextInt(), 1, 6); w4 = range(random.nextInt(), 1, 6); w5 = range(random.nextInt(), 1, 6); System.out.println(w1 + " " + w2 + " " + w3 + " " + w4 + " " + w5); } } amacim spesifik olarak bir intervall belirlemek random olarak print edilen sayilar icin. random.nextInt(7) yapinca 0 da isin icine katiliyor. o yuzden yeni metod yazilmasi gerek diye dusundum. ya da random.nextInt(7) satirinin isimi gorucek herhangi bir versiyonu var mi? bu yazdigim kodda range kismi ise yaramiyor. eksili ve/ya da cok buyuk sayilar cikiyor compile edildiginde. hatam nerede acaba? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ağustos 22, 2009 Paylaş Mesaj tarihi: Ağustos 22, 2009 while ((number = random.nextInt()) >= from && number <= to); satırını açalım biraz: number değişkenine rastgele bir int atıyorsun number from ile to arasındaysa while döngüsünün içine giriyorsun while döngüsünün içi boş olduğu için from ile to arasında olduğu sürece tekrarlıyorsun yapmak istediğinin tam tersini yapmışsın yani Ayrıca while döngüsünü doğru şekilde yazsan aradığın interval'i bulabilmen için dakkalarca beklemen gerekebilir. Random.nextInt(int) 0'da ekliyor iyi güzel. Sen interval içinde kaç rakam varsa ona göre Random.nextInt(int) çağırıp sonra offset'ini eklersin üstüne olur biter. Mesela 1-6 arası mı istiyorsun. Random.nextInt(6) + 1 işini görecektir. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
kermit Mesaj tarihi: Ağustos 22, 2009 Paylaş Mesaj tarihi: Ağustos 22, 2009 Penthesilea said: Gunaydin bu arada ehueuhe ya kardeşim kafan mı iyi akşamın 11 inde mesaj yazıyosun günaydın diyosun dalga mı geçiyosun bizle sen ? trollüyo bölümü ya durduk yere ciddi bişi konuşuluyo şurda Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ağustos 22, 2009 Paylaş Mesaj tarihi: Ağustos 22, 2009 Bu arada fonksiyonun kendisi açıklamasından çok daha kısa: static int range(int from, int to) { return new java.util.Random().nextInt(to - from + 1) + from; } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Ağustos 22, 2009 Paylaş Mesaj tarihi: Ağustos 22, 2009 abi Random.nextInt(6) + 1 iste ne gerek var ki ona, bi de tekrar tekrar randomladigin icin uniform prob vermemis oluyorsun sayilara Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ağustos 22, 2009 Paylaş Mesaj tarihi: Ağustos 22, 2009 Sadece 1-6 istiyorsa öyle daha pratik tabii. Ama oyun yapmak istiyormuş. Değişik intervaller gerekiyorsa o şekilde bir yardımcı metod kullanışlı olur. Random konusunda haklısın. Burdan yakalım o zaman: public abstract class MiragesHyperRandom { private static final Random random = new Random(); public static int nextInt(int from, int to) { return random.nextInt(to - from + 1) + from; } } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Ağustos 22, 2009 Konuyu açan Paylaş Mesaj tarihi: Ağustos 22, 2009 while dongusunde sacmalayip tam tersini yapmisim gercekten. +1 olayi da ilk etapta aklima gelmedi gayet mantikli tabi :D tesekkurler :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar