Etiket arşivi: Java

Java List remove() UnsupportedOperationException Hatası ve Çözümü

Bu hatayı aldığınızda öncelikle listelerde geçerli olan remove(int index) fonksiyonunun referans sayfasına bakalım;

Throws:
UnsupportedOperationException – if the remove method is not supported by this list.

Aslında hata gayet açıklayıcıydı ama başka tür hatalar aldığınızda da referans sayfasına bakmanızda fayda olduğundan bu aşamayı da yazdım.

Ben bu hatayı Arrays.asList ile liste oluşturduğumda aldım;

        List enumList = Arrays.asList(ApplicationStatus.values());
        enumList.remove(3);

List enumList = Arrays.asList(ApplicationStatus.values()); enumList.remove(3);

Bu kodun amacı ApplicationStatus sınıfındaki enum degerleri bir listeye atıp ardından bazı elemanları silme işlemi yapmaktı.

Bu şekilde asList ile oluşturulan listeler java.util.Arrays$ArrayList gibi bir liste döndürüyor ve bu tip listeler remove() add() gibi fonksiyonları desteklemiyor. Bu sebepten UnsupportedOperationException hatasını alıyoruz.

Bunun çözümü bir şekilde düzgün bir liste oluşturmak. Ben şöyle yaptım;

        List enumList = Arrays.asList(ApplicationStatus.values());
        List realList = new ArrayList();
        for (int i = 0; i < enumList.size(); i++) {
            realList.add(enumList.get(i));
        }
        realList.remove(3);

List enumList = Arrays.asList(ApplicationStatus.values()); List realList = new ArrayList(); for (int i = 0; i < enumList.size(); i++) { realList.add(enumList.get(i)); } realList.remove(3);

Artık realList ile istediğim gibi remove(), add() fonksiyonlarını kullanabiliyorum.

Java BigDecimal.divide() fonksiyonu

Java’da iki BigDecimal değeri divide() fonksiyonu ile bölmek istediğimde şu hatayı aldım;

Non-terminating decimal expansion; no exact representable decimal result.

Hatayı almamın sebebi divide fonksiyonunu yanlış kullanmammış. Şöyle iki değişkenimiz olsun;

BigDecimal sayi1 = BigDecimal.valueOf(100);
BigDecimal sayi2 = BigDecimal.valueOf(50);

BigDecimal sayi1 = BigDecimal.valueOf(100); BigDecimal sayi2 = BigDecimal.valueOf(50);

Bunları bölmeye çalışalım;

sayi1.divide(sayi2);

sayi1.divide(sayi2);

İlgili referans sayfasından da görebileceğiniz gibi bu şekilde bir kullanım yanlış. roundingMode parametresini kullanmamız zorunlu. Peki roundingMode kullanmadan bölmek mümkün mü ? Ben böyle yaptım (alttaki kod tek satır));

BigDecimal sonuc = new BigDecimal(sayi1.doubleValue() / sayi2.doubleValue());

BigDecimal sonuc = new BigDecimal(sayi1.doubleValue() / sayi2.doubleValue());

Bu kod çalıştı. Bunun daha iyi bir yolu varsa yorum olarak yazarsanız sevinirim.

Turkcell ilk açık kaynaklı ürününü duyurdu !

Turkcell’den beklemediğim ve beni şaşırtan bir haber geldi. Turkcell Teknoloji ilk açık kaynaklı, GPL lisanslı ürünü Isola Framework’u duyurdu. Isola, Java ile web uygulaması geliştirenler için yine bir javascript frameworku olan Extjs’i temel alarak geliştirilmiş bir javascript frameworku. Sanırım ajax4jsf’e benzer bir işi yapıyor.

Böyle büyük ölçekteki bir şirektin özgür yazılıma destek vermesi, ülkemizde özgür yazılımın gelişmesi adına güzel bir gelişme. Turkcell Teknoloji için bu bir ilk ama son olmayacaktır diye düşünüyor ve umuyorum.

Bu güzel hareketinden dolayı Turkcell’i ben de (*) tebrik ediyorum.

Turkcell Teknoloji’nin nasıl bir yer olduğunu merak edenleriniz varsa Televidyon’un videosunu izleyebilirler ve bilgi alabilirler.

Bu arada haberi sevgili Görkem Çetin‘in linux sohbet listesine attığı posta sayesinde öğrendim. Kendisine bu güzel haberi ilettiği için teşekkür ederim.

Java Console’da String Formatlama – Printf()

Bu ara java ile uğraşıyorum.. Gerçekten güzel bir dil. Eğer Eclipse gibi bir editör ile yazarsanız çok kolay bir dil haline geliyor. Henüz tam olarak OOP (Object Oriented Programming (Nesneye Yönelik Programlama)) mantığım çok iyi olmadan yazsam da bir şeyler yazabiliyorum : ) Konsolda çalışıyorum ve konsolda string formatlamayı internette çok aradım, sonunda buldum.. Şöyle oluyormuş… Java Console’da String Formatlama – Printf() yazısına devam et

Java’da Değişkeni String’ten Integer veya Double’a Çevirme (String to Int, Double)

Bir değişkeni integer’dan double’a cast ederek çevirmek kolay çünkü ikisi de aynı sınıftan türemişler.. bknz.

int a = 50;
double b = (int) a;

gibi.. Fakat bir string, sayıya aynı sınıftan türemedikleri için cast ederek çevrilemiyor, parse etmek gerekiyor.. Şöyleki;

String numara = 60;
double no = Double.parseDouble(numara);

üstteki kod string’i double’a çeviriyor. Integer’a çevirmek için double gördüğünüz yere Integer yazın :)

Pardus Linux+Eclipse+Java ile MySQL’e Bağlanmak

Pardus 2007.3’e kurduğum Eclipse yazılım geliştirme programında java dili kullanarak MySQL’e bağlanmaya çalışıyordum bir süredir (1-2 gündür). Ama bir türlü bağlanamadım. Bağlanmaya çalıştığımda şu hatayı alıyordum;

Cannot connect to db/user. Check your URL
Communications link failure

Last packet sent to the server 0 ms ago

Sonunda çözümü buldum… Problem mysql’in ilk kurulumuyla gelen ayarların dışarıdan erişime izin vermemesiymiş.. Düzeltmemiz gereken dosya /etc/mysql/my.ini dosyası.. Pardusta düzeltmeyi şu şekilde yapabiliyoruz; Pardus Linux+Eclipse+Java ile MySQL’e Bağlanmak yazısına devam et