sigisMoNd Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 javada array kullanarak bir diziyi tersten nasil yazabilirim? asagida denedim ancak hata verdi cmd de. hata olarak scanner icin cannot find symbol yaziyor. bir de a.length() kisimlari icin yine cannot find symbol yaziyor. su scanner i dogru yere koyamadim sanirim. denedim ama cozemedim. a.length() i neden bulamiyor onu da anlamadim. edit: uzerinde biraz daha oynadim. artik bu hatayi aliyorum: non-static variable sc cannot be referenced from a static context length hatasi hala ayni duruyor. said: import java.util.*; public class Array1 { Scanner sc = new Scanner (System.in); static void invert (int[]a) { for (int i=a.length()-1; i>=0; i--) { System.out.println(a[i] + " "); } } static int[] readArray () { int len = sc.nextInt(); int[]a = new int[len]; for (int i=0; i<len; i++) { a[i] = sc.nextInt(); return a; } } static void printArray (int[] a) { for (int i=0; i<a.length(); i++) { System.out.println(a[i] + " "); } } public static void main (String[]args) { //Scanner sc = new Scanner (System.in); int[]a = readArray(); printArray(a); invert(a); printArray(a); } } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 ilk olarak sen sen ol array donduren fonksiyon yazmaktan kacin. onun yerine bi array alip bunu modifiye edicek bi fonksiyon yaz ornegin alttaki ornek icin int[] fonksiyon() yerine void fonksiyon(int []) yap, sonra cagirirken arrayi initialize edip cagirirsin. Hatan su, readArray fonksiyonunda kullandigin sc global olarak define edilmemis oldugundan, define etmeden bi variable kullaniyosun orda, cunku sc denen seyi baska bi fonksiyonda define edip initialize ettin, local bi variable kisaca. Yapman gereken, ya yeni bi field eklemek Scanner icin, ya da Scanner'i readArray'de declare etmek, ki ikincisi mantiklisi. Scanner sc = new Scanner (System.in); satirini main'den silip readArray'in basina al length'i bulamamasinin sebebi de length'in fonksiyon degil field olmasi Java Array objesinde. a.length diye alicaksin () olmadan. diger hatalari da kodun uzerine yaziyorum comment olarak sigisMoNd said: javada array kullanarak bir diziyi tersten nasil yazabilirim? asagida denedim ancak hata verdi cmd de. hata olarak scanner icin cannot find symbol yaziyor. bir de a.length() kisimlari icin yine cannot find symbol yaziyor. su scanner i dogru yere koyamadim sanirim. denedim ama cozemedim. a.length() i neden bulamiyor onu da anlamadim. said: public class Array1 { // invert etmiyo bu fonksiyon, inverted sekilde basiyo ekrana, printInverted falan gibi bi isim daha dogru olur static void invert (int[]a) { for (int i=a.length()-1; i>=0; i--) { System.out.println(a[i] + " " ); } } static int[] readArray () { // Scanner sc = new Scanner(System.in) burda olcak int len = sc.nextInt(); int[]a = new int[len]; for (int i=0; i<len; i++) { a[i] = sc.nextInt(); //bu yanlis, her eleman icin donguyu tamamlayip // arrayi doldurup, ondan sonra dondureceksin a yi return a; } // return a burada olacak } static void printArray (int[] a) { for (int i=0; i<a.length(); i++) { System.out.println(a[i] + " " ); } } public static void main (String[]args) { // bu alttaki scanner satirini kaldir Scanner sc = new Scanner (System.in); int[]a = readArray(); printArray(a); invert(a); } } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Nisan 9, 2009 Konuyu açan Paylaş Mesaj tarihi: Nisan 9, 2009 Penthesilea said: ilk olarak sen sen ol array donduren fonksiyon yazmaktan kacin. onun yerine bi array alip bunu modifiye edicek bi fonksiyon yaz ornegin alttaki ornek icin int[] fonksiyon() yerine void fonksiyon(int []) yap, sonra cagirirken arrayi initialize edip cagirirsin. burada modifiye etmek icin invert i yazdim. o da zaten void invert (int []) tam anlayamadim burada demek istedigini. edit: simdi commentleri okiyim. yeni gordum editledigini Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 aciklamayi baya kotu yapmisim sc icin, saatin de sabah 7 olmasi ve hala yatmamis olmam etkisiyle :) Bir braket { } icinde bisey declare edersen Object x; seklinde, bu declaration sadece o braketler icinde gecerli olur, local bi variable'dir. O yuzden sen gidip main'de declare ettigin bir variable'i baska fonksiyonda kullanamazsin. Ya o fonksiyonda kullanmadan once yaratacaksin, ya da bu variable global bi variable olacak, fonksiyonlarin disinda declare edeceksin yani. senin sorununu yukarida soyledigim olay basitce cozuyo ama. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 En son olarak println() yerine print() yapmazsan istedigin gibi basmicak ekrana, onun yerine soyle yap diyip yatiyorum :) static void printArray (int[] a) { for (int i=0; i<a.length; i++) { System.out.print(a[i] + " " ); } System.out.println(); } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Nisan 9, 2009 Konuyu açan Paylaş Mesaj tarihi: Nisan 9, 2009 en son su hale getirdim ama hala hata aliyorum length konusunda said: import java.util.*; public class Array1 { static void invert (int[] a) { int i = 0; int j = a.length - 1; while (i < j) { int h = a[i]; a[i] = a[j]; a[j] = h; i++; j--; } } static int[] readArray () { Scanner sc = new Scanner (System.in); int len = sc.nextInt(); int[]a = new int[len]; for (int i=0; i<len; i++) { a[i] = sc.nextInt(); } return a; } static void printArray (int[] a) { for (int i=0; i<a.length; i++) { //hata burada System.out.println(a[i] + " " ); } } public static void main (String[]args) { int[]a = readArray(); printArray(a); invert(a); } } pardon yaticakmisin :) iyi uykular o zaman edit 324234: calisan hali Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Nisan 9, 2009 Konuyu açan Paylaş Mesaj tarihi: Nisan 9, 2009 tamam yukardaki editlerin icinde buldum onu da. cok tesekkurler :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 hah invert simdi invert olmus iste :) abi a.length() leri a.length yaparsak sorunun cozulecek yukarda da dedigim gibi, Java'da length bi fonksiyon degil, bi field. () lari kaldi yani length'in sonundan calismasi lazim ondan sonra hata gormuyorum ben, println leri de bi ust posttaki gibi duzeltirsen programi calistirdiktan sonra of yanlis basmisim diye duzeltmene gerek kalmicak :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Nisan 9, 2009 Konuyu açan Paylaş Mesaj tarihi: Nisan 9, 2009 abi calisti ama yanlis calisti ya saka gibi. 9 1 2 3 4 5 6 7 8 9 yine 1 2 3 4 5 6 7 8 9 verdi :'( invertte sorun sanki bakiyim bir printArray() komutu vermeye unutmusum invertten sonra :D Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 Abi, invert bu sefer sadece array'i modifiye ediyo, modifiye ettikten sonra altina print cagirman lazim, basmiyosun su anda sen invert ettigin arrayi invert fonksiyonunda hata yok onemli degil bu arada ne demek Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Nisan 9, 2009 Konuyu açan Paylaş Mesaj tarihi: Nisan 9, 2009 tamam ben de az once farkettim onu. editlemistim mesaji Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 Pratik bilgiler: Konsola array yazdırmak için Arrays API'si: System.out.println(Arrays.toString(a)); Ayrıca index'ler üzerinde çalışmıyorsanız Java 1.5'de eklenen foreach döngüsünü kullanmanızı şiddetle tavsiye ederim. Hem yazması kolay, hem okuması. Hata şansınız da daha az. for (int i = 0; i < a.length; i++) { syso(a[i]); } yerine for (int n : a) { syso(n); } Okunuşu: a içindeki (int tipindeki) her n için { ... } a array'inin en başından başlayıp sırayla tüm elemanlar için dönüyor yani. Ayrıca sadece array için değil, bütün Iterable'lar için kullanılabiliyor. Dipnot: i değişkeni index anlamında kullanıldığı için foreach kullanırken i kullanmaktan kaçının. Çünkü burda i index değil, integer. En ideali anlaşılabilir tam bir kelime kullanmak. Ama tabi yerine göre n, m gibi değişken isimleri de yeterli olabilir. Metod kısaysa özellikle. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Nisan 9, 2009 Konuyu açan Paylaş Mesaj tarihi: Nisan 9, 2009 @Mirage: baya pratik gozukuyor gercekten benim baska bir sorum olucak. simdi amac verilen quadrat matrixte ana diagonalde (almancada hauptdiagonal diye geciyor ondan oyle dedim) spiegelung(yansima denilebilir sanirim) yapilacak. simdi ornek vericem o zaman anlarsiniz: mesela 2 0 0 0 2 7 6 3 7 8 0 0 --- 0 8 5 1 6 5 6 0 ---/ 0 0 6 7 3 1 7 5 0 0 0 5 said: import java.util.*; public class Array3 { static int[][] readArrayMatrix () { Scanner sc = new Scanner (System.in); int len = sc.nextInt(); int[][]a = new int[len][len]; for (int i=0; i<len; i++) { for (int j=0; j<len; j++) { a[i][j] = sc.nextInt(); } } return a; } static void printMatrix (int[][]a) { for (int i=0; i<a.length; i++) { for (int j=0; j<a.length; j++) { System.out.print(a[i][j] + " " ); } } System.out.println(); } static void transpose (int[][]a) { for (int i=0; i<a.length; i++) { for (int j=0; j<a.length; j++) { int h = a[i][j]; a[i][j] = a[j][i]; a[j][i] = h; } System.out.println(); } } public static void main (String[]args) { int[][]a = readArrayMatrix(); //printMatrix(a); transpose(a); printMatrix(a); } } benimkinde ayni kaliyor nedense. yazdigim transpose metodu mantikli gelmisti. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 O senin transpose kodu 2 defa transpose eder. yani once [0, 2] yi [2, 0] la swapliyosun, sonra i=2 j =0 olunca [2, 0] i [0,2] ile swapliyosun, ortaya ayni sey cikio :) transpose'un for loopunda j yi i+1'den baslat. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 Gunaydin bu arada ehueuhe Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 Bu arada sey, printmatrix'inde endline'i koydugun yer yanlis zaten calistirirsan farketmissindir, bi de transpose komutunda gereksiz bi endline basiyosun. Bu arada Mum'un dedigi gibi arrays.tostring'i kullanman baya kolaylastirir isini. matrixlerde falan da kullanabilirsin. ikinci dedigi islemi yapman icin ama, arrayinde bi obje tasiyor olman gerekli. int yerine Integer tasiman lazim yani. Gerci otomatik cast ediyor olmasi lazim int'i Integer'a, ama gerek yok boyle bi ornekte. bu olmaz yani, for (int n : a) { syso(n); } boyle yapman lazim for(Integer n : a) { System.....(a); } arrays to string'i matrixlerde boyle kullanabilirsin for(int i=0; i<a.length; i++) { System.out.println(Arrays.toString(a[i]); } a[i][j] ye mesela elementlerimiz, a[i] burada bir rowu temsil ediyor yani, e matrix de her rowu bir array olan bi dalga sonucta. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 Merak ettim simdi bu adam yazdiysa bi bildigi vardir diye baktim, artik int ve double gibi object olmayan typelar da o 1.6'da gelen for loop dalgasinda calisiyomus lan. Calismiyodu eskiden Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 For each döngüsü Java'ya 1.5 ile eklendi. Eklendiğinde primitif array'ler için de çalışıyordu. said: The for-each construct is also applicable to arrays, where it hides the index variable rather than the iterator. The following method returns the sum of the values in an int array: ... 1.5 for each Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 Abi ben bunu kullanamadigimi adim gibi hatirliyorum ya Derken tamam neden oyle bisey dusundugumu hatirladim. Kodlarimda arrayden ziyade Map, Set falan kullandigimdan, ve bunlar primitif type tasimadigindan kullanamiyordum, taslar yerine oturdu :) for each'in sucu yokmus ehue. 6 yazmisim evet 5 olacak, 6 zaten hala guncel surum di mi? Ben ilk 2007 yazinda ogrenip asik olmustum :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 Evet 6 hala güncel sürüm. Bu arada Set ile çalışıyor. Iterable interface'ine sahip her tip için çalışıyor işte. Map ile de doğrudan çalışmıyor ama Map.entrySet metoduyla key/value ikililerinden oluşan bir set alıp o set üzerinden for each döngüsü kullanabilirsin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 Hayir onu kastetmedim, surekli Set ve Map ile kullandigim icin for each'i, ve onlar da primitive type degil sadece Object tasidiklari icin, aklimda foreach'te de olmuyor diye kalmis. ne yaptin sen de allaskina onu mu bilmicem :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Nisan 9, 2009 Konuyu açan Paylaş Mesaj tarihi: Nisan 9, 2009 tesekkurler tekrar :) for each i sonraki alistirmalarda denicem. goze de hos geliyor sevdim :D Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Nisan 10, 2009 Konuyu açan Paylaş Mesaj tarihi: Nisan 10, 2009 tekrar selam! 2 sorum var. 1.si asagida yazdigim kodla ilgili. input: mesela 5 //n-n matrix icin n degeri 23 4 54 7 8 9 5 4 1 //bunlar da bu matrixe yerlestirilecek //sayilar. satir satir yerlestirilecek //ama sutun halinde yazilmis halinde //ekrana verilecek. bos olan hucreler de 0 //ile doldurulacak 23 9 0 0 0 4 5 0 0 0 54 4 0 0 0 ===> boyle yani 7 1 0 0 0 8 0 0 0 0 benim yazdigim programda ilk ve son sayilar matrixe eklenmiyor nedense. cozemedim. 2. sorum da for-each ile ilgili. asagidakinde mesela for (int j=0; j<n; j++) { for (int i=0; i<n; i++) { System.out.print(a[i][j] + " " ); } su kisimdaki kullanimi mumkun mudur? 2 boyutlu oldugu icin burada cozemedim o olayi. mumkunse nasil yapilir? said: import java.util.*; class Array5 { public static void main (String[]args) { Scanner sc = new Scanner (System.in); int n= sc.nextInt(); byte[][] a = new byte[n][n]; byte val = (byte)sc.nextInt(); while (sc.hasNextInt()) { // fill the matrix row by row val = (byte)sc.nextInt(); for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { if (sc.hasNextInt()) { a[i][j] = val; val = (byte)sc.nextInt(); } else { a[i][j] = 0; } } } // write the matrix column by column for (int j=0; j<n; j++) { for (int i=0; i<n; i++) { System.out.print(a[i][j] + " " ); } } } } } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 10, 2009 Paylaş Mesaj tarihi: Nisan 10, 2009 For-each sadece okuma amaçlı kullanılıyor. Index kullanarak array'e atama yaptığın için uymuyor bu duruma. val değişkenini kaldırırsan düzelir sorun sanırım. İlk başta val değişkenine atama yaparken fazladan nextInt kullandığın için ilk input boşa gidiyor. Dolayısıyla da son elemana geldiğin zaman başlangıçta boş yere okuduğun int yüzünden okunacak int kalmamış oluyor. said: import java.util.*; class Array5 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); byte[][] a = new byte[n][n]; while (sc.hasNextInt()) { // fill the matrix row by row for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (sc.hasNextInt()) { a[i][j] = (byte) sc.nextInt(); } else { a[i][j] = 0; } } } // write the matrix column by column for (int j = 0; j < n; j++) { for (int i = 0; i < n; i++) { System.out.print(a[i][j] + " "); } } } } } Edit: Matrixteki sütunları yatay olarak yazdırcak olsan for-each kullanabilirdin. Matrix'i transpoze etmiş gibi yazdırır ama: said: for (byte[] column : a) { System.out.println(Arrays.toString(column)); } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Nisan 10, 2009 Konuyu açan Paylaş Mesaj tarihi: Nisan 10, 2009 val variablesini kaldirinca duzeldi tesekkurler. for each aciklamasi icin de ayrica tesekkurler :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar