Bittus Mesaj tarihi: Nisan 12, 2010 Paylaş Mesaj tarihi: Nisan 12, 2010 Yarına bir proje yetiştirmem gerekiyor. birkaç sorum olacak. şimdilik biryerde takıldım. Öncelikle ilk sorunum: input file'dan satır satır bilgi okumam gerekmekte. her satırda önce bir product type var, sonraki satırlarda ise o product ile bilgiler var. Bold olan kısımda bu bilgileri split edip array içinde tuttum. said: public static void main(String[] args){ try{ BufferedReader in = new BufferedReader(new FileReader("inputfile.txt")); String str; while ((str = in.readLine()) != null){ String delims = "[ ]"; String[] tokens = str.split(delims); in.close(); } } catch (IOException e){ System.out.println(e.getMessage()); } } input file da şunun gibi birşey: said: Refrigerator R101 45 60 100 A 1.25 R104 80 70 88 A 2.00 WashingMachine W101 60 70 A 10 40 1.25 .... öncelikle array yerine ArrayList kullanmam gerekiyor. bunu nasıl yapabilirim? (Java syntaxına biraz yabancıyım, hep C gördüm) bir de, mesela Refrigerator satırı product type ögrenmek dışında bir işime yaramıyor. bir sonraki satıra nasıl geçebilirim? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
aquila Mesaj tarihi: Nisan 12, 2010 Paylaş Mesaj tarihi: Nisan 12, 2010 ArrayList liste = new ArrayList(); sonra liste.add(); diye eklicen tek tek. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 12, 2010 Paylaş Mesaj tarihi: Nisan 12, 2010 input o sekildeyse, [ ve ] i ne diye delimiter olarak kullaniyorsun onu anlamadim? edit: haa dogru regex giriliyordu sanirim split() in icine, tamam o halde, bosluklardan ayiriyorsun yani direk. bir alt satira gecmek icin de, split edersin delimiterlardan, size a bakarsin, eger 1 ise demek ki sadece tek bir entry varmis o satirda, e bu da (gosterdigin kadariyla) sadece product bilgisi demek if(splitString.length == 1) continue; yapip loopa devam edebilirsin Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Bittus Mesaj tarihi: Nisan 12, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 12, 2010 peki şöyle yapma şansım var mı: said: public static void main(String[] args){ try{ BufferedReader in = new BufferedReader(new FileReader("inputfile.txt"); String str; while ((str = in.readLine()) != null){ String delims = "[ ]"; String[] tokens = str.split(delims); Arraylist list = new ArrayList(); list.add(tokens[0]); list.add(tokens[1]); list.add(tokens[2]); . . . in.close(); } } catch (IOException e){ System.out.println(e.getMessage()); } } böyle bir syntax doğru olur mu? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 12, 2010 Paylaş Mesaj tarihi: Nisan 12, 2010 syntax dogru da, for loop icinde yap tabi onu, oyle 1 2 3 diye hard codelama. bir de, sonra nasil kullanmayi planliyorsun o array listi? cunku o tokens arrayi da tek basina isini gorebilir. arraylisti try icinde declare etmissin, bu sebeple try bracketlarinin disinda zaten kullanamayacaksin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Bittus Mesaj tarihi: Nisan 12, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 12, 2010 delimeter o olmuyor ki... o iki kapalı parantezin arasında ne oluyorsa, mesela boboa inputu için [o] ise: tokens[0] = b tokens[1] = b tokens[2] = a oluyor. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Bittus Mesaj tarihi: Nisan 12, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 12, 2010 doğru ya, for dururken niye o kadar kastırdıysam :D ya ilk mesajda dediğim gibi array listdekiler productın özellikleri. onları arraylistde tutup listeleme, yeni product ekleme gibi şeylerde kullanacağım. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Bittus Mesaj tarihi: Nisan 12, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 12, 2010 Penthesilea said: bir de, sonra nasil kullanmayi planliyorsun o array listi? cunku o tokens arrayi da tek basina isini gorebilir. arraylisti try icinde declare etmissin, bu sebeple try bracketlarinin disinda zaten kullanamayacaksin. ya aslında onu öyle yapmak istememiştim de olur mu diye sormak için ekledim oraya. onun dışında kullanmak için ayrıca bir class mı oluşturmam gerekiyor? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 12, 2010 Paylaş Mesaj tarihi: Nisan 12, 2010 bak ben olsam soyle yapardim. Ilk olarak Product diye bir class yap. Icinde sunlar olsun protected String m_productId; //(bu R101 i falan tasiyacak) ve de ister protected ArrayList properties; // (iste her satirdaki numara, A falan onlari tasimak icin) ya da o numaralarin harflerin bi anlamlari varsa, onlar icin ayri ayri memberlar yapabilirsin. Sonra bu Product classina bir constructor yaz, icine bir string alsin parametre olarak. Okudugun tum line'i bu constructor'in icine at (veya parcalayip at, oyle daha mantikli) bundan bi product olustursun iste. Yani main'de soyle yap kisaca HashMap<String, ArrayList<Product>> productmap = new HashMap<String, ArrayList<Product>>(); try { BufferedReader input = new BufferedReader(new FileReader("sdfadsfsfasfa.txt")); String line; String currentProduct; while((line = input.readLine()) != null) { String[] splitStr = line.split(" "); if(splitStr.length == 1) { // demek ki product description bu arkadas productmap.put(splitStr[0], new ArrayList<Product>()); currentProduct = splitStr[0]; } else { Product product = new Product(splitStr); ArrayList<Product> products = productmap.get(currentProduct); products.add(product); productmap.put(currentProduct, products); } } } catch (Exception e) { System.err.println("Exception caught: " + e.Message); e.printStackTrace(); } Simdi bu noktada artik elinde koca bir hashmap var, icine bir product ismi verince, refrigirator mesela, sana direk icinde tum refrigirator productlarini tasiyan bir arraylist veriyor. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar