Turkcell | Geleceği Yazanlar

Soru & Cevap

Java dizi işlemleri

07.11.2019 - 14:12

Ben şimdi bir metni ilk önce paragraflar olarak, daha sonra bu paragrafları cümlelere ayırarak, daha sonra bu cümleleri kelimelerine ayıracağım, kelimeleride harflerine ayıracağım. 

Bunları daha sonra rastgele seçeceğim. Diyelim pragraf değiştir dedim pragrafların yerleri değişecek. Cümle değiştir dersem Paragraftaki cümlelerin yeri değişecek. Kelime değiştir dersem de bu cümlelerdeki kelimelerin yeri değişecek. 

Rastgele seçildiğinde aynı paragraf, cümle veya kelime tekrar gelmemeli.

Bunu java da nasıl yapabilirim sizce ? Paragraf kısmına kadar yapabildim. Açıkçası ama devamını getiremedim. Yardımcı olabilecek biri var mı ? 

 

Paragraf kodunu aşağıya bırakıyorum. Fikri olan ?

public void paragraf() {

		String line;
		line = textArea.getText();
		String dizi[] = line.split("\n\n");
		Random r = new Random();
		int[] randomtut = new int[dizi.length];
		int[] randomdizi = new int[dizi.length];

		for (int i = 0; i < dizi.length; i++) {
			randomtut[i] = 0;
			randomdizi[i] = i;
		}
		for (int i = 0; i < dizi.length; i++) {
			int randomsayi = r.nextInt(dizi.length);
			int count = 0, x = 0;
			if (randomtut[randomsayi] == 1) {
				while (true) {
					randomsayi = r.nextInt(dizi.length);
					if (randomtut[randomsayi] == 0) {
						randomtut[randomsayi] = 1;
						count++;
						break;
					}
				}
			} else {
				randomtut[randomsayi] = 1;
				count++;
			}
			sayi = randomdizi[randomsayi];

			if (x <= dizi.length) {

				metin += dizi[sayi] + "\n";
				x++;
			}
		}
	}

 

890 Görüntülenme

2 Cevap

Gürkan
08.11.2019 - 20:39

Programı yaptım sayılır fakat karıştırma işlemi sırasında aklıma birşey takıldı. Cümlelerde, kelimelerde vb. yerlerde karıştırma işlemi yapıldıktan sonra tekrardan aynı metin karıştırılmış kelime veya cümlelerle yeniden oluşturulacak mı? Yoksa sadece gerekli veriler metinden ayıklanıp sadece karıştırılacak mı?

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Özge
08.11.2019 - 20:46
Tam olarak şöyle 1- Paragraflar ayrıştırılıp rastgele seçilecel, 2- Paragraftaki cümleler ayrştırılıp rastgele seçilecek. 1. paragrafla 2. paragraftaki cümleler karışmamalı. 3- Cümlelerdeki kelimeler ayrıştırılmalı. Rastgele seçilmeli. Kelimeler bütün metinle karışmamalı sadece ait olduğu cümledeki yeri karıştırılmalı. 4- Kelimelerdeki harflerin yeri karıştırılmalı. Bütün metinle karıştırılmamalı. Misal Ben okula gidiyorum. Cümlesinde ben kelimesinin yerleri karşmalı okula kelimesinin harfleri karışmalı gibi. Benim sorunum karışma kısmı ile ilgili çözemedim bunu daha.
Gürkan
08.11.2019 - 21:28
Karıştırma sorununu da hallettim sayılır. Bir şey daha soracağım kusura bakmazsanız. Tüm verileri (paragraf, kelime, cümle ve harfler) ya da aralarından birini seçip rastgele karıştırdık diyelim. Yeniden metni oluştururken hangi veriden yararlanarak oluşturacağız. Çünkü ayrı ayrı verileri çekip karıştırıyoruz ve hangi veriyi karıştırdıysak ancak o verilerle cümleyi yeniden oluşturabiliriz. Dictionary yapısı kullandığım için bu mümkün olabilir. Metin oluşturma konusunda da biraz bilgi verebilirseniz programı tamamlayabilirim ve mail üzerinden ya da buradan kodları gönderebilirim.
Özge
08.11.2019 - 21:34
Yeniden bir metin oluşturmak gibi bir şey yapmıyoruz aslında dediğim gibi hepsi kendi arasında karıştırılacak. Paragraflar diyelim üç paragraf var 1-2-3 şekilde bu rastgele olduğunda 3-1-2 şeklinde olmalı. Cümleler ise hangi paragrafa aitse o parafraf içinde karıştırılmalı. 1. paragraf 4 cümle var 3-1-4-2 şeklinde 2. paragraf 3 cümle varsa 2-1-3 ... Böyle devam ediyor. Kelimeleride önceki yorumda açıklamıştım. Mailden yollarsanız güzel olur. ozgeyilmazh@gmail.com
Recep Özen
08.11.2019 - 12:13

Öncelikle merhaba karıştırma işlemini yapmadım ancak şu kod işini görür diye tahmin ediyorum. 

 

private void metniParcala() {

        String text = "Dünya'nın dış kabuğu ile bu kabuğun üzerindeki atmosfer (hava) ve hidrosfer (okyanuslar ve denizler) katmanları doğrudan gözlemle incelenebilir. Oysa Dünya'nın iç bölümlerine ulaşarak yapısını doğrudan inceleme olanağı yoktur. Dünya'nın iç yapısına ilişkin bütün bilgiler depremlerin incelenmesinden ve Dünya'nın içinde var olduğu düşünülen maddeler üzerindeki deneylerden elde edilmiştir. Yanardağların varlığına ve yer kabuğunun yüzeyindeki ısı akışı ölçümlerine dayanarak Dünya'nın iç bölümlerinin çok sıcak olduğunu biliyoruz. Yer kabuğunun derinliklerine doğru indikçe kayaçların sıcaklığı her kilometrede 30 °C kadar yükselir. Böylece; kabuğun en alt katmanlarının çok daha üstünde yer alan kayaçlar kızıl kor haline dönüşür. Aslında Dünya'nın büyüklüğüne oranla yer kabuğu çok incedir. Eğer Dünya'yı bir futbol topu büyüklüğünde düşünürsek kabuğu da ancak topun üzerine yapıştırılmış bir posta pulu kalınlığındadır. Kabuğun altında kalan kayaçlar ise akkor sıcaklığına kadar ulaşır.\n" +
                "\n" +
                "Depremlerin nedeni, yer kabuğundaki bir kırıkla birbirinden ayrılan iki büyük kütlenin (levhanın) birdenbire harekete geçerek üst üste binmesi ya da uzaklaşması sonucunda yer kabuğunun şiddetle ileri geri sarsılmasıdır. Büyük bir depremde bazi titreşimler Dünya'nın öbür yüzündeki dairesel bir alanda \"odaklanır\". Buna karşılık bazı titreşimler çekirdeği aşıp öbür yana geçmez. Böylece Dünya'nın öbür yüzünde hiçbir titreşimin duyulmadığı halka biçiminde bir \"gölge\" belirir. Bu gölgenin boyutları ölçülerek çekirdeğin büyüklüğü hesaplanabilir. Ayrıca deprem titreşimlerinin yayılma hızı saptanarak içinden geçtikleri maddelerin yoğunluğu, dolayısıyla bileşimi belirlenebilir. Eritilmiş kayaçlarla yapılan laboratuvar deneyleri bu çalışmalara büyük ölçüde ışık tutar. Dünya'nın yüzeyi, kalınlığı 6 ile 70 km arasında değişen bir \"kabuk\" katmanıyla örtülüdür. Yerkabuğu denen bu katman daha ağır maddelerden oluşan ve 2.865 km derine inen çok kalın \"manto\" katmanının üzerine oturur. Mantonun bittiği yerde Dünya'nın merkezine kadar 3.473 km boyunca uzanan \"çekirdek\" başlar. Jeologlara göre, içteki manto katmanı çok büyük kabarma hareketleri sonucunda yerkabuğunu iterek birçok yerde yüzeye çıkmıştır. Ayrıca normal olarak yerkabuğunun yapısında bulunmayan bazı kayaçlar da yanardağı hareketleri nedeniyle Dünya'nın yüzeyine ulaşmıştır. Jeologlar bu verilere dayanarak mantonun üst kesimlerinin \"ültrabazik\" korkayaçlardan oluştuğunu ileri sürerler. Bir yanda asit kayaç olarak nitelenen granitin yer aldığı kayaç sınıflandırmasının öbür ucunda bulunan bu ültrabazik kayaçlar ağır demir ve magnezyum silikatlardan oluşur. Mantonun alt bölümlerinin de aynı yapıda, ama daha ağır ve yoğun olduğu sanılmaktadır. Çekirdeğin yapısındaki maddeler ise hem mantodakilerden daha ağır, hem de hiç değilse çekirdeğin dış bölümünde sıvı haldedir. Buna karşılık çekirdeğin içinin manto ve kabuk gibi katı olduğu sanılıyor. Yerçekirdeğinde olağanüstü bir basınç vardır. Bilinen elementlerin çoğu böylesine büyük bir basınç altında çok yoğunlaşmış olarak bulunabilir; ama jeologların genel kanısı, bazı demirli göktaşları (meteoritler) gibi çekirdeğin de metal halindeki nikel ve demirden oluştuğudur." +
                "\n";

        List<String> paragrafList = new ArrayList<>();
        List<String> cunleList = new ArrayList<>();
        List<String> kelimeList = new ArrayList<>();

        int startCounter1 = 0;
        for (int i = 0; i < text.length(); i++) {
            if (text.substring(i, i + 1).equals("\n")) {
                paragrafList.add(text.substring(startCounter1, i));
                startCounter1 = i;
            }
        }

        int startCounter2 = 0;
        for (int i = 0; i < text.length(); i++) {
            if (text.substring(i, i + 1).equals(".")) {
                cunleList.add(text.substring(startCounter2, i));
                startCounter2 = i;
            }
        }

        int startCounter3 = 0;
        for (int i = 0; i < text.length(); i++) {
            if (text.substring(i, i + 1).equals(" ")) {
                kelimeList.add(text.substring(startCounter3, i));
                startCounter3 = i;
            }
        }
    }

 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Özge
08.11.2019 - 14:26
Bu kodu denedim ama karıştırma işini yapmadı. Sadece ayrıştırma işlemi oldu. Şöyle bir link buldum https://www.geeksforgeeks.org/collections-shuffle-java-examples/ Bunu deneyeceğim.

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.