Şimdi Ara

Java dizi yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
9
Cevap
0
Favori
666
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba javaya yeni başladım bir dizi içine veri ekleme yapmak isteyince içindeki diğer veriyi siliyor

    örnek int []dizi={1,3,5,7,9}

    diziye 6 eklemek isteyince 7 yi silip devamını yazıyor benim istediğim 1,3,5,6,7,9 çıktısını vermesi nasıl yapabilirim acaba


    import java.util.*;

    public class ornek
    {
    public static void main(String[] args)
    {
    int x=6;
    int i=0;
    int[] diz={1,3,5,7,9};

    while(i<=diz.length){
    if(diz>=x){
    diz=x;

    }
    if(x<=diz){
    x+=diz;
    }
    System.out.println("Dizi elemanlari " + diz);
    i++;
    }
    }


    }




  • "diz" bir Array o yüzden
    diz[i]
    seklinde kullanılmalı fakat alttaki döngülerde sadece "diz" şeklinde kullanılmış (ekleme: DH Forum i'yi italik olarak algıladığından onu yanlış gösterdi)

    Array klasik Java tipidir. 6'yı 7'nin yerine eklemek endeks belirterek araya ekleme; onun için de Java Collections Framework /JCF dahilindeki ArrayList yapısını kullanabilirsin

    JCF için:https://wiki2.org/en/Java_collections_framework+Newton (Türkiye'den açan Wikipedia)

    Yeni dizi "diz_" olsun. Oluşturmak için:

    ArrayList<Integer> diz_ = new ArrayList<Integer>(Arrays.asList(1,3,5,7,9));

    Dizideki 7'nin endeksi 3 old için

    diz_.add(3, 6);

    ile 7 yerine 6 ekleyebilirsin.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 12 Ocak 2019; 18:9:47 >




  • import java.util.*; 

    public class ornek
    {
    public static void main(String[] args)
    {
    int x=6;
    int i=0;
    int[] diz={1,3,5,7,9};

    while(i<=diz.length){
    if(diz[i]>=x){
    diz[i]=x;

    }
    if(x<=diz[i]){
    x+=diz[i];
    }
    System.out.println("Dizi elemanlari " + diz[i]);
    i++;
    }
    }


    }



    teşekkürler ama asıl kodum bu sanırım siteye eklerken bir sıkıntı çıkmış
  • Farketmez, yine de orada 7'yi silmeden x=6'yı eklemesi için diziyi Array değil ArrayList ile oluşturman gerekli.
  • bkz: Dynamic Memory Allocation.

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • Ne yapmak istediğini doğru anladıysam, ki yukarıdaki arkadaşlar farklı konuşuyor, diziye eleman eklemek istiyorsun, eleman silmeden.

    O while döngüsünü, eğer sayıları sıralamak için yazdıysan bu şekilde olmaz. Sen çünkü, i yi endeks olarak ıyorsun, x i de o endekste koyuyorsun, yani 7 yerine 6 yazdırıyorsum, eklemr olmuyor. Sadede değiştiriyorsun.

    Zaten eleman eklemek için fonksiyon olması lazım javada, ama array list kullanman lazım, işin daha kolay olur.
    Dizi.add() şeklinde.
    Ben olsam önce x i ekler, da sonra sıralama yapardım.



    < Bu mesaj bu kişi tarafından değiştirildi an agony -- 14 Ocak 2019; 16:34:34 >
    < Bu ileti tablet sürüm kullanılarak atıldı >
  • an agony A kullanıcısına yanıt
    Evet while döngüsü biraz yanlış yazılmış fakat yine de Dizi.add() olmaz cunku Array'ın add metodu yok, hata verir. ArrayList'in add metodu var:
    Java dizi yardım
  • Array'ler; array boyu kadar RAM'de boşluk alınmaktadır. Mevcut array üzerindeki verileri değiştirebilirsiniz. Ancak boyutu değişme noktasında yeni array oluşturup, verileri ona aktarmanız gerekir.

    Sizin isteğinize örnek olarak, 6 yı eklemek istiyorsunuz ve sonuç olarak ;

    {1,3,5,6,7,9} sonucu çıksın istiyorsunuz.

    O zaman;
    (önceki array boyu)+(yeni ekleyeceğiniz veri boyu) = yeni array boyu
    şeklinde bir array oluşturuyoruz;
     
    int []dizi={1,3,5,7,9}; // Aldığımız
    int eklenecek = 6; //ekleyeceğimiz
    int[] yeniDizi = new int[dizi.length+1]; //Yeni değerimiz

    boolean eklendi= false; //Eklediğimizde index kaymaması için
    int eklenecekSira = 3; //Hangi araya ekleyeceğimiz (Array'ler 0 dan unutmayalım)
    for(int i=0; i<yeniDizi.length;i++) { //Döngümüz başlarız. İndeximizin adı "i"
    if(i == eklenecekSira) { //İndex eklenecek sıraya geldi mi?
    yeniDizi[i]= eklenecek; //Yeni indexe ekleyeceğimiz veriyi ekleriz
    eklendi=true; //Eklediğimiz için önceki index kaymaması için durumu değiştiririz
    } else if(!eklendi) //Döngümüzde eklenecek veri eklenmedi mi?
    yeniDizi[i]= dizi[i]; //eklenmediyse normal aktarmaya devam ediyoruz
    else { //Döngümüzde eklenecek veri eklenmiş ise
    yeniDizi[i]= dizi[i-1]; //Yeni array'e göre index önceki indexten bir karakter önde gitmektedir. O nedenle bir öncekini alırız
    }
    }


    Şayet dümdüz en sona ekleyeceksen, bu kadar kod kasmaya gerek yok. (Sonuç = {1,3,5,7,9,6}) (Java 8 ve üzeri JRE gerektirir)

     
    int []dizi={1,3,5,7,9}; // Aldığımız
    int[] eklenecekler = {6}; //ekleyeceğimiz
    Stream<int[]> tempStream1 = Stream.of(dizi);
    Stream<int[]> tempStream2 = Stream.of(eklenecekler);
    tempStream1 = Stream.concat(tempStream1, tempStream2);
    IntStream intStream = tempStream1.flatMapToInt(x -> Arrays.stream(x));
    dizi= intStream.toArray();




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.