Şimdi Ara

Kafamı karıştıran bir String sorunu var...

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
26
Cevap
0
Favori
712
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Merhaba.

    Hemen konuya giriyorum. Kendim bir oyun geliştirmeye başladım ve bu oyundaki "int SILAH_AGIRLIGI", "int KOSMA_HIZI", "String DOSYA_UZANTISI" gibi bilgileri bir Bilgiler sınıfına koydum. Ama şöyle bir değişken yazdığımda:
     
    public static final String SES_UZANTISI = ".wav";


    başka bir sınıfta kullandığımda değişkeni bulamıyor. System.out.println(); ile yazdırmaya çalıştığımda konsola hiçbirşey yazmıyor. Bunun nedeni nedir?



  • Bunu konsola yazdırmak icin nasil bir kod yaziyorsun ? Eger bulamayacaksa zaten compile hatasi vermis olmasi gerekirdi.
  • quote:

    Orijinalden alıntı: Mephalay

    Bunu konsola yazdırmak icin nasil bir kod yaziyorsun ? Eger bulamayacaksa zaten compile hatasi vermis olmasi gerekirdi.

    Belirttiğim gibi: "System.out.println(); ile yazdırmaya çalıştığımda konsola hiçbirşey yazmıyor". Herhangi bir hata da yok :/.

    Düzeltme: Kullandığım kod: System.out.println(Bilgiler.SES_UZANTISI);



    < Bu mesaj bu kişi tarafından değiştirildi ImLeGenD53 -- 16 Mayıs 2015; 13:20:59 >
  • hocam hayırlı akşamlar
    Öncelikle Bilgiler sınıfınızın nesnesini doğru oluşturup oluşturmadığınızı kontrol edin, eğer doğruysa System.out.println(Bilgiler.SES_UZANTISI+""); şeklinde deneyin. Buda olmazsa koda bakmam lazım.

    Bir küçük hatırlatma : global değerleri private şeklinde kapsüllersek daha doğru ve güvenli bir kullanım olur. değişkene diğer sınıflarda get ve set metodlarıyla ulaşmamız daha doğru.
  • quote:

    Orijinalden alıntı: frknkntr

    hocam hayırlı akşamlar
    Öncelikle Bilgiler sınıfınızın nesnesini doğru oluşturup oluşturmadığınızı kontrol edin, eğer doğruysa System.out.println(Bilgiler.SES_UZANTISI+""); şeklinde deneyin. Buda olmazsa koda bakmam lazım.

    Bir küçük hatırlatma : global değerleri private şeklinde kapsüllersek daha doğru ve güvenli bir kullanım olur. değişkene diğer sınıflarda get ve set metodlarıyla ulaşmamız daha doğru.

    Size de hayırlı akşamlar.

    Şunu belirteyim, Bilgiler sınıfında tanımladığım bütün değişkenlerin "sadece bir tane olmasını" ve "değiştirilemez" olmasını istediğim için burada nesneye yönelik herhangi bir şey yapmadım. Ayrıca şöyle bir şey daha var, System.out.println(); metoduyla yazdırmaya çalıştığımda, ne bir mesaj, ne bir hata, ne de başka bir şey göstermiyor. Sizin dediğiniz gibi System.out.println(Bilgiler.SES_UZANTISI + ""); şeklinde yazdırmayı denedim ama yine bir sonuç alamadım. Biraz değiştirip kodu System.out.println("Ses uzantısı: " + Bilgiler.SES_UZANTISI); haline getirdim, ama yine bir sonuç alamadım.
    Şunu da söyleyeyim, Değişkenin tanımlandığı yer şöyle bir yerde:
     
    package bilgiler;

    ...

    public class Bilgiler {

    ...

    public static final int RENK_SEFFAF_SEVIYE = renkSeffafSeviyeyiVer();

    // ------------------------------------------------------------------------------------------------------------------

    public static final String RESIM_UZANTISI = resimUzantisiniVer();

    public static final String SES_UZANTISI = sesUzantisiniVer(); <------------

    public static final String HARITA_UZANTISI = haritaUzantisiniVer();

    // ------------------------------------------------------------------------------------------------------------------

    private Bilgiler() {}

    // ------------------------------------------------------------------------------------------------------------------

    private static int ortakKenarSayisiniVer() {
    return 4;
    }

    ...

    }


    Tekrar tekrar kullanmam gereken bütün değişkenleri bu şekilde bir yerde tanımlamak istiyorum ama bazıları çalışıyor, bazıları çalışmıyor.

    Daha alt satırlarda SES_UZANTISI değişkeninin eşitlendiği metodun bulunduğu yer de şöyle bir yerde:
     

    ...

    private static int renkSeffafSeviyeyiVer() {
    return 0;
    }

    // ------------------------------------------------------------------------------------------------------------------

    private static String resimUzantisiniVer() {
    return ".png";
    }

    private static String sesUzantisiniVer() { <------------
    return ".wav";
    }

    private static String haritaUzantisiniVer() {
    return ".svsh";
    }
    }


    Sizce bir çözümü var mıdır? :(




  • Hocam siz ulaşmaya çalıştığınız sınıfta Bilgiler sınıfının objesini oluşturdunuz mu ?

    Oluşturmadıysanız ulaşmak istediğiniz class'ta

    Bilgiler bilgiler = new Bilgiler();

    şeklinde oluşturup


    System.out.println("Ses uzantısı: " + bilgiler.SES_UZANTISI);

    şeklinde erişin.....

    Eğer oluşturduysanız Bilgiler sınıfındaki constructor'ı ve diğer metodları public yapıp ulaşmak istediğiniz class'da şu şekilde ulaşmayı denermisiniz....

    Bilgiler bilgiler = new Bilgiler();


    System.out.println("Ses uzantısı: " + bilgiler.sesUzantisiniVer);
  • quote:

    Orijinalden alıntı: frknkntr

    Hocam siz ulaşmaya çalıştığınız sınıfta Bilgiler sınıfının objesini oluşturdunuz mu ?

    Oluşturmadıysanız ulaşmak istediğiniz class'ta

    Bilgiler bilgiler = new Bilgiler();

    şeklinde oluşturup


    System.out.println("Ses uzantısı: " + bilgiler.SES_UZANTISI);

    şeklinde erişin.....

    Eğer oluşturduysanız Bilgiler sınıfındaki constructor'ı ve diğer metodları public yapıp ulaşmak istediğiniz class'da şu şekilde ulaşmayı denermisiniz....

    Bilgiler bilgiler = new Bilgiler();


    System.out.println("Ses uzantısı: " + bilgiler.sesUzantisiniVer);

    Hocam tamam, objesini oluşturma fikri güzel de. Bu bilgiler sınıfını tek bir yerde kullanmıyorum, 50 farklı sınıfta Bilgiler sınıfını kullanıyorum. Eğer objesini oluşturup yapacaksam bu seferde her bir sınıf için bir Bilgiler sınıfı objesi mi oluşturmam gerekiyor?



    < Bu mesaj bu kişi tarafından değiştirildi ImLeGenD53 -- 17 Mayıs 2015; 23:23:50 >




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • hocam bir tane Pattern var bu sorunu çözen singleton desing pattern diye eğer bir sınıfa çok yerde ulaşılacaksa singleton yapılır ve obje oluşturlmadan erişilir.
    Örnek olarak loglama işlemleri verilebilir.... Sizin sıkıntınız da aynı isterseniz kullanabilrsiniz.
    Yok ben almıyım derseniz her sınıfta objesini oluşturmak zorundasınız....
  • bu da konuyla ilgili Özcan Acar hocamızın makalesi makale
  • Zaten static ve final yapmışsın mübarek. Onları sabit ifadelerle kursaydın yazdığın kod çalışırdı. Metodlarla kurmanın hiçbir anlamı yok, aksine zarar. Şöyle yap;

    public static final int RENK_SEFFAF_SEVIYE = 1;
    ...
  • elektro_gadget hocam arkadaşın ulaşamama nedeni obje oluşturmaması
  • quote:

    Orijinalden alıntı: frknkntr

    elektro_gadget hocam arkadaşın ulaşamama nedeni obje oluşturmaması

    Hayır ulaşamama nedeni değişkenleri metodla kurmuş olması. Söylediğim gibi yapsa obje oluşturmasına gerek kalmayacak zaten.
  • Hocam arkadaş başka bir sınıftan veri almaya çalışıyor objesini oluşturmadan nasıl erişebilir anlamadım.....
  • quote:

    Orijinalden alıntı: frknkntr

    Hocam arkadaş başka bir sınıftan veri almaya çalışıyor objesini oluşturmadan nasıl erişebilir anlamadım.....


    static?
  • ImLeGenD53 I kullanıcısına yanıt
    Çalışması lazim kodda herhangi bir hata yok gördüğüm kadarıyla ,

    Ama öncesinde ve sonrasında System.out.println("****************); basabilir misin ? *** basıp sizin değişkeni basmamasi imkansiz. Yok *** da basmıyorsa o zaman logları yazdığı yer sizin baktığınız yer değildir.



    Ayrıca eğer oyun derken android ile yazıyorsanız (ben bu ara androidle uğraştığım için aklıma ilk gelen) System.out yerine Log.d kullanmanızdır.


    Umarım yardımcı olmuşumdur.
  • quote:

    Orijinalden alıntı: frknkntr

    bu da konuyla ilgili Özcan Acar hocamızın makalesi makale

    Bilgisayarıma geçtiğim zaman deneyeceğim, şimdiden teşekkürler.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: combo003


    Çalışması lazim kodda herhangi bir hata yok gördüğüm kadarıyla ,

    Ama öncesinde ve sonrasında System.out.println("****************); basabilir misin ? *** basıp sizin değişkeni basmamasi imkansiz. Yok *** da basmıyorsa o zaman logları yazdığı yer sizin baktığınız yer değildir.



    Ayrıca eğer oyun derken android ile yazıyorsanız (ben bu ara androidle uğraştığım için aklıma ilk gelen) System.out yerine Log.d kullanmanızdır.


    Umarım yardımcı olmuşumdur.

    Merhaba hocam.

    Oyunu PC'de yapıyorum,bu yüzden System.out kullanıyorum.
    Dediğiniz gibi öncesinde ve sonrasında yazı yazdırmayı denedim, ve evet yazıyor ama başka bir yazıyla bu değişkeni tek bir System.out ile yazdırmaya çalıştığımda konsola hiçbirşey yazmıyor. Örneğin:

    System.out.println("Değişken: " + Bilgiler.SES_UZANTISI + ". asdafhjxhhf");

    gibi şeyler denedim ama konsolda hiçbirşey yok.

    < Bu ileti mobil sürüm kullanılarak atıldı >




  • Verilen cevapları okuma zahmetine girseydin sorununu çoktan çözmüş olurdun ama okuma sen tırmalamaya devam et.
  • elektro_gadget hocam haklısınız static' i görmemişim
  • private static String sesUzantisiniVer() { <------------
    return ".wav";
    }

    burayı public yapıp

    System.out.println("Değişken: " + Bilgiler.sesUzantisiniVer() + ". asdafhjxhhf");

    yapsan olmuyormu ben eclipste 3-4 türlü denedim hepsinde yazıyor bi sorun göremedim kodlarda
  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.