2014-02-18 2 views
0

Я попытался разобраться в заданный набор данных с помощью вставки sort.But при попытке напечатать выход не печатает, правильный вывод:вставки рода отладки

Albatross 1 
mockingbird 2 
vultures 3 
redwoodpeckers 6 
pigeons 7 
crows 10 
condos 12 
bluejays 15 
dodos 15 
baldeagles 25 
cardinals 40 
hummung birds 88 

String[]bn={"Cardinals","BlueJays","Albatross","Vultures","Crows","Mockingbirds","Condors","BaldEagles","Pigeons","RedHeadWoodPecker","Hummingbirds","Dodos"}; 
int[]bq={40,15,1,3,10,2,12,25,7,6,88,15}; 
public static void SortNumericalOrdernsert (String[] bn,int[] bq){ 
    for(int i=1;i<bq.length;i++){ 
     int next=bq[i]; 
     String y=bn[i]; 
     //find all the insertion location 
     //Move all the larger elements up 
     int j=i; 
     while(j>0 && bq[j-1]>next){ 
      bn[j]=bn[j-1]; 
      bq[j]=bq[j-1]; 
       j--; 
     } 
     //insert the element 
     bq[j]=next; 
     bn[j]=y; 
    } 

кто-то может помочь

+2

вы должны показать код, где вы печатаете массивы. – Sumedh

+0

Где вы печатаете ??? Я не вижу никакого выражения 'print' – nachokk

+0

, вы можете указать код, как вы вызываете метод SortNumericalOrdernsert. –

ответ

0

Я скопировал и вставил ваш код, и он работает правильно. Я считаю, что проблема связана с методом печати. Пожалуйста, предоставьте это, чтобы мы могли решить проблему.

Я также поставил ваш бегущий код, и в этом нет ничего плохого. Я считаю, что вы должны предоставить весь класс, чтобы мы могли определить, где проблема. Вот как я добавил ваш код, и он работал с ожидаемым результатом.

public class Sort { 

    static String[]bn={"Cardinals","BlueJays","Albatross","Vultures","Crows","Mockingbirds","Condors","BaldEagles","Pigeons","RedHeadWoodPecker","Hummingbirds","Dodos"}; 
    static int[]bq={40,15,1,3,10,2,12,25,7,6,88,15}; 

    public static void SortNumericalOrdernsert (String[] bn,int[] bq) { 
     for(int i=1;i<bq.length;i++){ 
      int next=bq[i]; 
      String y=bn[i]; 
      //find all the insertion location 
      //Move all the larger elements up 
      int j=i; 
      while(j>0 && bq[j-1]>next){ 
       bn[j]=bn[j-1]; 
       bq[j]=bq[j-1]; 
       j--; 
      } 
      //insert the element 
      bq[j]=next; 
      bn[j]=y; 
     } 
    } 

    public static void ShowAllBirds(String[]bn,int[]bq) { 
     for(int a=0;a<=bn.length-1;a++) { 
      System.out.println(bn[a]+" : "+bq[a]); 
     } 
    } 
    public static void main(String[] args) { 
     SortNumericalOrdernsert(bn, bq); 
     ShowAllBirds(bn, bq); 
    } 
} 
+0

государственной статической силы ShowAllBirds (String [] млрд, INT [] Бк) { \t \t // TODO автоматическая генерация метод заглушки \t \t для (Int А = 0; а <= bn.length-1; A ++) { \t \t \t System.out.println (bn [a] + ":" + bq [a]); – user3321128

0

Вам нужно добавить цикл, чтобы пройти и печатать отдельные элементы массива:

for(String name: bn){ // this needs to be included at the end of your sort method AFTER the for loop 
    System.out.println(name); 
} 

посоветуйте; Java передается по значению, а не по ссылке, вам придется возвращать массив с модифицированными значениями, если впоследствии вы собираетесь работать с отсортированным массивом.

Только что заметил, что вам нужно как имя, так и его значение; не сможет использовать для этого расширенный цикл. Вам нужно будет идти с чем-то вдоль линий:

for(int index = 0; index < bn.length; index++){ 
    System.out.println(bn[index] + " " + bq[index]); 
} 

Более подробную информацию о для петель и массивов можно найти в Java учебники и документы (только Google их).

0

Он работает, поставил arrray млрд и BQ как статические

public class test { 

    /** 
    * @param args 
    */ 
    static String[]bn={"Cardinals","BlueJays","Albatross","Vultures","Crows","Mockingbirds","Condors","BaldEagles","Pigeons","RedHeadWoodPecker","Hummingbirds","Dodos"}; 
    static int[]bq={40,15,1,3,10,2,12,25,7,6,88,15}; 
    public static void SortNumericalOrdernsert (String[] bn,int[] bq){ 
     for(int i=1;i<bq.length;i++){ 
      int next=bq[i]; 
      String y=bn[i]; 
      //find all the insertion location 
      //Move all the larger elements up 
      int j=i; 
      while(j>0 && bq[j-1]>next){ 
       bn[j]=bn[j-1]; 
       bq[j]=bq[j-1]; 
        j--; 
      } 
      //insert the element 
      bq[j]=next; 
      bn[j]=y; 
     } 
    } 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     SortNumericalOrdernsert(bn,bq); 
     for(int i = 0; i< bn.length; i++) 
     { 
      System.out.println(bn[i] + "\t" + bq[i]); 
     } 
    } 
} 
+1

Объявление статических переменных, которые не обязательно должны быть статическими, - это плохая практика программирования. Мне сказали: особенно когда вы просто изучаете Java и должны изучать объем и инкапсуляцию. Код работает, я просто не знаю, правильно ли он подходит. –

Смежные вопросы