कृपया मुझे सीखने के कार्यक्रम में मदद करें

मुझे क्रमबद्ध क्रम में सरणी पर प्रत्येक नंबर डालने के लिए addPlayer फ़ंक्शन को संशोधित करने की आवश्यकता है। प्रोग्राम को आउटपुट करना चाहिए: -100 -45 4 19 50 55 और आदि टिप्स:----> ओवरलोडेड ऐड () विधियाँ क्रमबद्ध क्रम में सूची बनाए रखने के लिए विशेष रूप से उपयोगी होती हैं< ------

मेरा आउटपुट पहले 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;
}
 }
0
Cosmopus 3 अगस्त 2018, 06:58

2 जवाब

मैंने आपका कोड पढ़ा और मेरा सुझाव है कि आप प्रत्येक पूर्णांक की तुलना करने के लिए compareTo() विधि का उपयोग करें।

जावा दस्तावेज़

उदाहरण

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
2
Crammeur 3 अगस्त 2018, 07:42

आपकी कक्षा यही खोज रही थी:

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

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

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

      while ( (!foundHigher) && (i < players.size()) ) {
         if (players.get(i) > playerNum) {
            players.add(i, playerNum); // fixed: insert playerNum at element i
            foundHigher = true;
         }

         ++i;
      }

      // fixed: changed so executes if higher number NOT found
      if (i == players.size()) { // No higher number found, add at end
         players.add(new Integer(playerNum));
      }
   }

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

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

   // Maintains ArrayList of player numbers 
   public static void main (String [] args) {
      ArrayList<Integer> players = new ArrayList<Integer>();

      addPlayer(players, 55);
      addPlayer(players, 4);
      addPlayer(players, 50);
      addPlayer(players, 19);

      printPlayers(players);
   }
}
0
CarverOfChoice 4 अक्टूबर 2018, 18:59