2016-04-05 20 views
-1

Görev, 20 öğeli int dizisini oluşturmak ve 0 ile dizin 18 arasındaki rasgele tamsayılarla doldurmaktır. Sonra, ortadaki -1 değerini eklemek ve dizinin tamamını yazdırmak istiyorum. Yine de kodumda bir sorun var.Aralık içi orta konuma ekleme int

import java.util.Random; 

public class Zadanie5_3{ 

    public static void main(String[] args){ 

     Random rand = new Random(); 
     int[] tab = new int[20]; 

     for(int i = 0; i <= 18; i++){ 
      tab[i] = rand.nextInt(); 
     } 

     for(int j = 19; j > tab.length/2; j--){ 
      tab[j] = tab[j--]; 
      tab[tab.length/2] = -1; 

      System.out.println(tab[j]); 
     } 

    } 

} 
+1

Çıktınızı gönderebilir misiniz lütfen – Dimi

+0

Yani ortadaki öğeye -1 eklerken diziyi sağa kaydırmak istiyor musunuz? – anaxin

cevap

0
import java.util.Random; 

public class Zadanie5_3 { 

    public static void main(String[] args){ 
     Random rand = new Random(); 
     int[] tab = new int[20]; 

     for(int i = 0; i <= 18; i++){ 
      tab[i] = rand.nextInt(); 
     } 

     for(int j = 19; j >= 9; j--){ 
      tab[j] = tab[j-1]; 
     } 

     tab[9] = -1; 

     // print 
     for(int i = 0; i <= 18; i++){ 
      System.out.println(tab[i]); 
     } 
    } 

} 

result: 

1956305001 
-2096126360 
98350219 
1446603176 
1822536231 
-585584710 
1907161554 
-1249344271 
330285354 
-1 
-2035667564 
935350135 
178577755 
1025860367 
-965180067 
1164224066 
1726709678 
1615705033 
-1258924041 
1

Sorun, ikinci döngüde.

tab[j] = tab[j--];

j-- Yani her yineleme j 1 ile j değerini azaltır doğru çözüm yerine 2

tab[j] = tab[j - 1]; 1. ile azaltılacaktır.

0

İkinci for döngüsünüzü iki döngüye bölmelisiniz. İlk döngü, dizinin üst yarısını bir dizin ile yukarı kaydırır. İkinci döngü, tam diziyi çıkarır.

ilk döngüde olarak, ifadenizi yerleştirin:

 tab[j] = tab[j--]; 

Ancak, j-- aslında j düştüğünden, bu ifadeyi ayarlamak zorunda. bu ifadeye ile değiştirin: İki yapı arasındaki yılında

 tab[j] = tab[j - 1]; 

, ortada indeksine -1 atarsınız. Bu işlem bir döngüye ait değildir, çünkü sadece bir kez yürütülmelidir. Ayrıca, sadece diğer elemanların kaydırılması bittikten sonra çalıştırılmalıdır, çünkü şu anda ortadaki elemanı geçersiz kılarsınız.