Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Java ile ilgili birkaç soru


Bittus

Öne çıkan mesajlar

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ş

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ş

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ş

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ş

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ş

×
×
  • Yeni Oluştur...