Java'da Arrays.binarySearch() metodu çalışmıyor

Katılım
22 Haziran 2016
Mesajlar
702
Çözümler
2
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar yazdığım kodu çalıştıramadım. Yardımcı olabilir misiniz?

Kod.
Java:
public class test {

    public static void main(String[] args) {
    test metodcagir = new test();
    metodcagir.veritabanı();
    }


    public void veritabanı () {

    String[] liste1 = {"LostLight600","Lord_Wanter","Execute007"}; // (0,1,2)

        Arrays.sort(liste1);
        System.out.println(Arrays.toString(liste1));

        //-------------------------------------------------------------------------------------------------------------------------------------------
        Scanner dizeadiseciciGirisi = new Scanner(System.in);
        String dizeadiseciciCikis = dizeadiseciciGirisi.nextLine();
        //-------------------------------------------------------------------------------------------------------------------------------------------

        //-------------------------------------------------------------------------------------------------------------------------------------------
        Scanner dizedegeriseciciGiris = new Scanner(System.in);
        int dizedegeriseciciCikis = dizeadiseciciGirisi.nextInt();
        //-------------------------------------------------------------------------------------------------------------------------------------------

        Arrays.binarySearch(dizeadiseciciCikis,dizedegeriseciciCikis);







    }



    }

Hata mesajı.
Kod:
Error:(30, 15) java: no suitable method found for binarySearch(java.lang.String,int)
    method java.util.Arrays.binarySearch(long[],long) is not applicable
      (argument mismatch; java.lang.String cannot be converted to long[])
    method java.util.Arrays.binarySearch(int[],int) is not applicable
      (argument mismatch; java.lang.String cannot be converted to int[])
    method java.util.Arrays.binarySearch(short[],short) is not applicable
      (argument mismatch; java.lang.String cannot be converted to short[])
    method java.util.Arrays.binarySearch(char[],char) is not applicable
      (argument mismatch; java.lang.String cannot be converted to char[])
    method java.util.Arrays.binarySearch(byte[],byte) is not applicable
      (argument mismatch; java.lang.String cannot be converted to byte[])
    method java.util.Arrays.binarySearch(double[],double) is not applicable
      (argument mismatch; java.lang.String cannot be converted to double[])
    method java.util.Arrays.binarySearch(float[],float) is not applicable
      (argument mismatch; java.lang.String cannot be converted to float[])
    method java.util.Arrays.binarySearch(java.lang.Object[],java.lang.Object) is not applicable
      (argument mismatch; java.lang.String cannot be converted to java.lang.Object[])
    method java.util.Arrays.<T>binarySearch(T[],T,java.util.Comparator<? super T>) is not applicable
      (cannot infer type-variable(s) T
        (actual and formal argument lists differ in length))
    method java.util.Arrays.<T>binarySearch(T[],int,int,T,java.util.Comparator<? super T>) is not applicable
      (cannot infer type-variable(s) T
        (actual and formal argument lists differ in length))

@bitwise
 
Çözüm
Arkadaşlar yazdığım kodu çalıştıramadım. Yardımcı olabilir misiniz?

Kod.
Java:
public class test {

    public static void main(String[] args) {
    test metodcagir = new test();
    metodcagir.veritabanı();
    }


    public void veritabanı () {

    String[] liste1 = {"LostLight600","Lord_Wanter","Execute007"}; // (0,1,2)

        Arrays.sort(liste1);
        System.out.println(Arrays.toString(liste1));

        //-------------------------------------------------------------------------------------------------------------------------------------------
        Scanner dizeadiseciciGirisi = new Scanner(System.in);
        String dizeadiseciciCikis = dizeadiseciciGirisi.nextLine();
        //-------------------------------------------------------------------------------------------------------------------------------------------

        //-------------------------------------------------------------------------------------------------------------------------------------------
        Scanner dizedegeriseciciGiris = new Scanner(System.in);
        int dizedegeriseciciCikis = dizeadiseciciGirisi.nextInt();
        //-------------------------------------------------------------------------------------------------------------------------------------------

        Arrays.binarySearch(dizeadiseciciCikis,dizedegeriseciciCikis);







    }



    }

Hata mesajı.
Kod:
Error:(30, 15) java: no suitable method found for binarySearch(java.lang.String,int)
    method java.util.Arrays.binarySearch(long[],long) is not applicable
      (argument mismatch; java.lang.String cannot be converted to long[])
    method java.util.Arrays.binarySearch(int[],int) is not applicable
      (argument mismatch; java.lang.String cannot be converted to int[])
    method java.util.Arrays.binarySearch(short[],short) is not applicable
      (argument mismatch; java.lang.String cannot be converted to short[])
    method java.util.Arrays.binarySearch(char[],char) is not applicable
      (argument mismatch; java.lang.String cannot be converted to char[])
    method java.util.Arrays.binarySearch(byte[],byte) is not applicable
      (argument mismatch; java.lang.String cannot be converted to byte[])
    method java.util.Arrays.binarySearch(double[],double) is not applicable
      (argument mismatch; java.lang.String cannot be converted to double[])
    method java.util.Arrays.binarySearch(float[],float) is not applicable
      (argument mismatch; java.lang.String cannot be converted to float[])
    method java.util.Arrays.binarySearch(java.lang.Object[],java.lang.Object) is not applicable
      (argument mismatch; java.lang.String cannot be converted to java.lang.Object[])
    method java.util.Arrays.<T>binarySearch(T[],T,java.util.Comparator<? super T>) is not applicable
      (cannot infer type-variable(s) T
        (actual and formal argument lists differ in length))
    method java.util.Arrays.<T>binarySearch(T[],int,int,T,java.util.Comparator<? super T>) is not applicable
      (cannot infer type-variable(s) T
        (actual and formal argument lists differ in length))

@bitwise

BinarySearch parametre olarak array + key alir. ( Farkli parametrelerle de cagirabilirsin, API'den inceleyebilirsin Java Platform SE 8 )

Sen sanirim console'dan yazdigin seyi listede binary search ile aratmak istemissin.

Binary Search yapabilmen icin oncelikle Array'in Sorted olmasi gerekir. Sort olmayan Array'de binary search yapamazsin. ( Sen sort etmissin ama bunu bilincli mi yaptin ? )

Ilk parametre olarak String vermissin, o da gecersiz. BinarySearch implementasyonlarinin hic biri ilk parametre olarak String almiyor.

Kodu su sekilde degistirirsen calisir:

Java:
Arrays.binarySearch(liste1,dizedegeriseciciCikis);

Bence firsatin oldugunda binary search tam olarak nedir, nasil calisir ogrenmeye bak. Hatta kendin binary search algoritmasi yaz. Mulakatlarda falan sorarlar, faydasi olur.
Arkadaşlar yazdığım kodu çalıştıramadım. Yardımcı olabilir misiniz?

Kod.
Java:
public class test {

    public static void main(String[] args) {
    test metodcagir = new test();
    metodcagir.veritabanı();
    }


    public void veritabanı () {

    String[] liste1 = {"LostLight600","Lord_Wanter","Execute007"}; // (0,1,2)

        Arrays.sort(liste1);
        System.out.println(Arrays.toString(liste1));

        //-------------------------------------------------------------------------------------------------------------------------------------------
        Scanner dizeadiseciciGirisi = new Scanner(System.in);
        String dizeadiseciciCikis = dizeadiseciciGirisi.nextLine();
        //-------------------------------------------------------------------------------------------------------------------------------------------

        //-------------------------------------------------------------------------------------------------------------------------------------------
        Scanner dizedegeriseciciGiris = new Scanner(System.in);
        int dizedegeriseciciCikis = dizeadiseciciGirisi.nextInt();
        //-------------------------------------------------------------------------------------------------------------------------------------------

        Arrays.binarySearch(dizeadiseciciCikis,dizedegeriseciciCikis);







    }



    }

Hata mesajı.
Kod:
Error:(30, 15) java: no suitable method found for binarySearch(java.lang.String,int)
    method java.util.Arrays.binarySearch(long[],long) is not applicable
      (argument mismatch; java.lang.String cannot be converted to long[])
    method java.util.Arrays.binarySearch(int[],int) is not applicable
      (argument mismatch; java.lang.String cannot be converted to int[])
    method java.util.Arrays.binarySearch(short[],short) is not applicable
      (argument mismatch; java.lang.String cannot be converted to short[])
    method java.util.Arrays.binarySearch(char[],char) is not applicable
      (argument mismatch; java.lang.String cannot be converted to char[])
    method java.util.Arrays.binarySearch(byte[],byte) is not applicable
      (argument mismatch; java.lang.String cannot be converted to byte[])
    method java.util.Arrays.binarySearch(double[],double) is not applicable
      (argument mismatch; java.lang.String cannot be converted to double[])
    method java.util.Arrays.binarySearch(float[],float) is not applicable
      (argument mismatch; java.lang.String cannot be converted to float[])
    method java.util.Arrays.binarySearch(java.lang.Object[],java.lang.Object) is not applicable
      (argument mismatch; java.lang.String cannot be converted to java.lang.Object[])
    method java.util.Arrays.<T>binarySearch(T[],T,java.util.Comparator<? super T>) is not applicable
      (cannot infer type-variable(s) T
        (actual and formal argument lists differ in length))
    method java.util.Arrays.<T>binarySearch(T[],int,int,T,java.util.Comparator<? super T>) is not applicable
      (cannot infer type-variable(s) T
        (actual and formal argument lists differ in length))

@bitwise

BinarySearch parametre olarak array + key alir. ( Farkli parametrelerle de cagirabilirsin, API'den inceleyebilirsin Java Platform SE 8 )

Sen sanirim console'dan yazdigin seyi listede binary search ile aratmak istemissin.

Binary Search yapabilmen icin oncelikle Array'in Sorted olmasi gerekir. Sort olmayan Array'de binary search yapamazsin. ( Sen sort etmissin ama bunu bilincli mi yaptin ? )

Ilk parametre olarak String vermissin, o da gecersiz. BinarySearch implementasyonlarinin hic biri ilk parametre olarak String almiyor.

Kodu su sekilde degistirirsen calisir:

Java:
Arrays.binarySearch(liste1,dizedegeriseciciCikis);

Bence firsatin oldugunda binary search tam olarak nedir, nasil calisir ogrenmeye bak. Hatta kendin binary search algoritmasi yaz. Mulakatlarda falan sorarlar, faydasi olur.
 
Çözüm
BinarySearch parametre olarak array + key alir. ( Farkli parametrelerle de cagirabilirsin, API'den inceleyebilirsin Java Platform SE 8 )

Sen sanirim console'dan yazdigin seyi listede binary search ile aratmak istemissin.

Binary Search yapabilmen icin oncelikle Array'in Sorted olmasi gerekir. Sort olmayan Array'de binary search yapamazsin. ( Sen sort etmissin ama bunu bilincli mi yaptin ? )

Ilk parametre olarak String vermissin, o da gecersiz. BinarySearch implementasyonlarinin hic biri ilk parametre olarak String almiyor.

Kodu su sekilde degistirirsen calisir:

Java:
Arrays.binarySearch(liste1,dizedegeriseciciCikis);
Sıralamayı bilinçli yaptım. Amacım değerlerini Scanner sınıfından alan bir Binary Search yazmaktı. Fakat henüz çok acemiyim Java'da.
 
Sıralamayı bilinçli yaptım. Amacım değerlerini Scanner sınıfından alan bir Binary Search yazmaktı. Fakat henüz çok acemiyim Java'da.

Onemli degil, herkes ilk basta acemi oluyor. Amacim bilmedigini gostermek degil de, yazdigin her satir kodun neden orda oldugunu anlamani saglamakti.

Binary search ten gelen sonucu da kullanmiyor ornegin kod ama o kisimlari sen doldurursun. Sor yine sorun cikarsa.
@Silinen üye
Bir de aklima takildi onu da yazayim. Calisirken ingilizce kaynaklardan ogrenip kodu da Ingilizce yazmaya gayret et. Bunu aliskanlik haline getirirsen hem yabanci kimselerin kodunu okuman kolaylasir, hem de senin kodunu onlar anlar.

Ayrica her dilin kendi "convention" lari bulunur. Ona uyarak yazmaya calis. Ornegin Java icin defacto standart Google'in yayimladigi su : Google Java Style Guide

Bu isi ciddi yapan hangi firmayla calisirsan Google standartlarini kullandiklarini gorursun, Turkiye'de pek yapmiyorlar ama ozellikle Amerika'da Java icin standart bu.

Mesela class ismi "test" degil Test olmali. Parametre isimleri camel case olmali.
Yani: "dizedegeriseciciCikis" yerine "diziDegeriSeciciCikis" sekilinde.
Hatta bunu ingilizce yapsan "selectiveArrayValueQuitCommand" gibi cok daha anlamli olur.

Diger turlu sadece sen anliyorsun ne demek istedigini, 1 sene sonra okuyunca sen de hatirlamayacaksin : )
 
Son düzenleme:
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı