Java Arraylist Kodum Hatalı Çalışıyor. Hatayı Çözebilir Misiniz?

Bu konuyu okuyanlar

atkaksoy501

Müdavim
Katılım
31 Mayıs 2018
Mesajlar
2,622
Çözümler
1
Reaksiyon puanı
4,070
Puanları
113
Merhabalar. Programlama dersimin ödevini yapmaktayım. Ancak bir kısmında yazdığım kod hatalı çalışıyor. Hem ödevin ilgili bölümünün sorusunu paylaşacağım hem de yazdığım kodları. Aranızda java bilen arkadaşlar bana yardımcı olursa çok sevinirim.

Karşılaştığım temel hata:
Ne zaman bir for/while/if komutunun içerisine list.add(index, element) komutunu girsem sonsuz bir döngü haline geliyor o komut. İf komutu bile sonsuz bir şekilde çalışmaya başlıyor içinden çıkmıyor yani. list.add komutunu yazmazsam normal çalışıyor, yazdığım anda sonsuz döngüye giriyor.

Ödevin ilgili sorusu:
1620730511830.png


Yazmış olduğum kodun son hali (bu belki 10. kodum falan. Yukarıdaki sorunun tam çözümü değil şuan. Adım adım gittiğim için önce bu hatayı çözmem gerek.):
Java:
public static ArrayList<String> repeatElements(ArrayList<String> list, int k) {
        for (String s: list) {
            for (int i = 0; i < list.size(); i++) {
                for (int j = 1; j < k; j++) {
                    list.add(i, s);
                    System.out.println(k);
                }
            }
        }
        return list;
       
    }
public static void main(String[] args) {
         System.out.println("Part-3:");
        Scanner str = new Scanner(System.in);
        ArrayList<String> list = new ArrayList<String>();
        System.out.print("Enter number of strings: ");
        int n = str.nextInt();
        System.out.println("Enter " + n + " strings:");
        Scanner take = new Scanner(System.in);
        for (int i = 0; i < n; i++) {
            String string = take.nextLine();
            list.add(string);
        }
        System.out.print("Enter the value of k (stretch value): ");
        int k = take.nextInt();
        System.out.println(repeatElements(list, k));
}
Mesaj otomatik birleştirildi:

Yaklaşık 2 saat uğraşın sonunda kendim çözebildim. Olur da ileride benzer hatayı alan olur diyerekten buraya çalışan kodu da bırakıyorum.

Java:
    public static ArrayList<String> repeatElements(ArrayList<String> list, int k) {
        final String first = list.get(0);
        final int len = list.size();
        while (true) {
            for (int j = 0; j < k; j++) {
                list.add(list.get(0));
            }
            list.remove(0);
            if (first.equals(list.get(0))) {
                break;
            }
        }
        return list;
    }

    public static void main(String[] args) {
        System.out.println("Part-3:");
        Scanner str = new Scanner(System.in);
        ArrayList<String> list = new ArrayList<String>();
        System.out.print("Enter number of strings: ");
        int nm = str.nextInt();
        System.out.println("Enter " + nm + " strings:");
        Scanner take = new Scanner(System.in);
        for (int i = 0; i < nm; i++) {
            String string = take.nextLine();
            list.add(string);
        }
        System.out.print("Enter the value of k (stretch value): ");
        int k = take.nextInt();
        System.out.println(repeatElements(list, k));
    }
 
Son düzenleme:
Üst