2014-12-08 2 views
0

Я хотел бы узнать, как использовать алгоритм сортировки (последний метод кода) в методе «Вопросы», чтобы сортировать имена каждого игрока в заказе. Я не могу поместить его в метод Main, так как для него требуется строка (имена) из цикла, который находится в методе «Вопросы».Алгоритм сортировки [Внедрение в метод]

public static void main(String[] args){ 
    int players = Integer.parseInt(JOptionPane.showInputDialog("Please tell me how many players are taking part in this quiz!")); 


      /* --------------------------- Questions in Arrays --------------------------- */ 

     String[] question = {"Question 1: ", 
         "Question 2: ", 
         "Question 3: ", 
         "Question 4: ", 
         "Question 5: " }; 

      String[] answer = {"ans1", 
           "ans2", 
           "ans3", 
           "ans4", 
           "ans5" }; 




questions(question, answer, players); 

      /* --------------------------- Questions in Arrays --------------------------- */ 
}      /* End of Main Method */ 




      /* Questions Method */ 

public static void questions(String[] question, String[] answer, int n) { 

     String[] name = new String[n]; // Player Names 
     int[] playerscore = new int[n]; // Argument for Score 
     String[] que = new String[question.length]; //Questions for Loops 



      /* --------------------------- For loop for number of players --------------------------- */ 
    for (int i = 0; i < n; i++) 
    { 
     playerscore[i] = 0; 
     name[i] = JOptionPane.showInputDialog("What is your name player"+ (i+1) +"?"); 
     JOptionPane.showMessageDialog(null,"Hello :"+ name[i] + " Player number " +(i+1)+ ". I hope your ready to start!"); 


      /* --------------------------- Loop in Loop for questions --------------------------- */ 
     for (int x=0; x<question.length; x++) { 
      que[x] = JOptionPane.showInputDialog(question[x]); 
       if(que[x].equals(answer[x])) 
        { 

         playerscore[i] = playerscore[i] + 1; 

        } 

     else { 
       JOptionPane.showMessageDialog(null,"Wrong!"); 
      } 

       } // End for loop for Question 



     System.out.println("\nPlayer: "+(i+1)+ " Name: "+name[i]+"\tScore"+playerscore[i]+" out of 5.); 





      /* --------------------------- Loop in Loop for questions --------------------------- */ 



      } // End for loop for player number 

       } //End method questions 

государственной статической силы sortNames (имя String []) {

int i; 
boolean flag = true; // will determine when the sort is finished 
String temp; 

    while(flag) { // while flag is true 
    flag = false; 
     for (i = 0; i < name.length-1; i++) { 
      if (name[i].compareToIgnoreCase(name[i+1]) > 0) { 
      temp = name[i]; 
      name[i] = name[i+1];  // swapping 
      name[i+1] = temp; 
      flag = true; 
       } 
      } 
    } 

}

 /* --------------------------- Score Display --------------------------- */ 

}

ответ

0

Просто дайте ваш метод вопрос возвращает массив с именами игроков ,
Таким образом вы можете использовать возвращаемое значение для вызова метода sortNames.

+0

Когда я пытаюсь вернуть массив имен из метода вопрос он говорит, что стоимость уже была объявлена. – DanDan111

0

Почему вы не используете метод Arrays.sort() для сортировки имен? Вы используете сложный метод сортировки строк.

public static String[] sortNames(String name[]) 
{ 
    Arrays.sort(name); 
    return name; 
} 

Для справки Sort Array in Java

Если вы хотите сделать легко, то вы можете создать объект для каждого игрока и держать его в HashMap.

Вы можете сделать это с помощью HashMap в java с ключом в качестве игрока. Имя - String и Value как объект, который содержит всю информацию о игроке, который вам нужен.

Map<String, Object> map = new HashMap<String, Object>(); 

Также вы можете сортировать, что HashMap как

HashMap<String, PlayerInfo> map = new HashMap<String, PlayerInfo>(); 
ValueComparator bvc = new ValueComparator(map); 
TreeMap<String,PlayerInfo> sorted_map = new TreeMap<String,PlayerInfo>(bvc); 

map.put(playerName1, playerInfo1); 
map.put(playerName2, playerInfo2); 

map.put(playerNamen, playerInfon); 

sorted_map.putAll(map); 

System.out.println("results: "+sorted_map); 
+0

Как мне реализовать это в моем методе «Вопрос»? Ps. Я использовал этот сложный метод, поскольку это был алгоритм, который мы прошли. – DanDan111

+0

Я хотел бы использовать алгоритм, который у меня уже есть, так как я не хочу испортить код. Есть ли способ передать метод sortName в методе вопросов чуть выше отображения игрового поля для сортировки имен в порядке – DanDan111

+0

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

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