java - 运行程序并观察输出为: 55 4 50 19

标签 java arrays sorting

请帮助我制定学习计划

我需要修改 addPlayer 函数以按排序顺序将每个数字插入数组中。 程序应输出:-100 -45 4 19 50 55 等 提示:---> 重载的 add() 方法对于维护按排序顺序的列表特别有用< ------

前 4 个步骤我的输出正常,然后不起作用 (((

import java.util.ArrayList;
import java.util.Scanner;

 public class Array_sort_by_add {
   // Adds playerNum to end of ArrayList
   public static void addPlayer (ArrayList<Integer> players, int playerNum) {
  int i = 1;
  boolean foundHigher = false;

  // Look for first item greater than playerNum
  foundHigher = false;
  i = 1;

  while ( (!foundHigher) && (i < players.size()) ) {
     if (players.get(i) > playerNum) {
        
         // FIXME: insert playerNum at element i
        players.add(i, playerNum); // is it connect?
        foundHigher = true;
     }
     ++i;
  }

  // FIXME: change so executes if higher number NOT found
  if (true) { // No higher number found, add at end
    players.add(new Integer(playerNum));
  
    // It should be something here  - don't know what (((
    
  }

  return;
 }

   // Prints player numbers currently in ArrayList
   public static void printPlayers(ArrayList<Integer> players) {
 // int i = 1;

  for (int i = 1; i < players.size(); ++i) {
     System.out.println(" " + i + ". " + players.get(i));
  }

  return;
    }

  // Maintains ArrayList of player numbers 
  public static void main (String [] args) {
  ArrayList<Integer> players = new ArrayList<Integer>();
  
  // adding 10 values 
  addPlayer(players, 55);
  addPlayer(players, 4);
  addPlayer(players, 33);
  addPlayer(players, 30);
  addPlayer(players, 40);
  addPlayer(players, 80);
  addPlayer(players, 70);
  addPlayer(players, 19);
  addPlayer(players, -45);
  addPlayer(players, -100);
  
  printPlayers(players);

  return;
}
 }

最佳答案

我阅读了您的代码,建议您使用 compareTo() 方法来比较每个整数。

Java Doc

示例

public static void addPlayer (ArrayList<Integer> players, int playerNum) {
    int index = 0;

    for (int i = 0; i< players.size(); i++) {
        if (players.get(i).compareTo(playerNum) >= 0) {
            index = i;
            break;
        } else {
            index = i +1;
        }
    }
    players.add(index, playerNum);
}

并且您需要更改此循环的开始索引,否则您将跳过第一项。

示例

// Prints player numbers currently in ArrayList
public static void printPlayers(ArrayList<Integer> players) {
    for (int i = 0; i < players.size(); i++) {
        System.out.println(" " + (i+1) + ". " + players.get(i));
    }
}

System.out

 1. -100
 2. -45
 3. 4
 4. 19
 5. 30
 6. 33
 7. 40
 8. 55
 9. 70
 10. 80

Process finished with exit code 0

关于java - 运行程序并观察输出为: 55 4 50 19,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51665092/

相关文章:

java - 在 Java 中向 Rally 添加新用户

java - GWT:如何使用服务器端排列选择?

javascript - 从第一个数组中删除重复的索引值,按照第一个操作第二个(在某些特定条件下)

javascript - 过滤 - 多项选择 jquery javascript

java - 如何在Hibernate中实现多重inner join

java - 创建名为“defaultServletHandlerMapping”的 bean 时出错

javascript - 如何从数组中删除单个元素

java - 按照 int 数组给定的顺序打印 String 数组

java - 如何在 Java 中对对象数组进行排序?

python - 如何在 Pandas 数据框中按行值对日期时间列进行排序?