Question

Fondamentalement, le programme est censé créer une « table ronde » des cadres, avec un président qui ne peut pas être changé. Je sais un peu sorta presque ce que je fais et je suis à mi-chemin à travers mes méthodes pour l'insertion et le retrait des cadres, mais je viens d'essayer de tester mon code pour voir comment il allait et il obtient des erreurs dès l'entrée I les présidents des information. De plus, je ne suis pas vraiment sûr du tout ce que je voudrais aller sur la méthode removeByCorporation dans le ExecutiveList. Je suis presque certain que la méthode est presque tous incorrect et je suis tout simplement pas comment supprimer un nœud dans une liste circulaire doublement chaînée comme celui-ci.

* Pas besoin de me aider avec les méthodes d'impression, j'ai tout simplement pas eu encore à eux.

tl; dr: 1) Pourquoi est-il s'écraser tout de suite? 2) Je suis assez sûr que ma méthode de removeByCorporation est totalement faux. Le cas échéant, des suggestions ou aide sur la façon de résoudre ce problème?

Voici les deux classes j'avoir des ennuis avec, si vous souhaitez voir les autres laissez-moi savoir et je vais les poster, mais ils sont 99% accesseurs.

FIRST CLASS

public class ExecutiveList {

private ExecutiveNode chair;
ExecutiveNode cursor;

public ExecutiveList() {

}

public ExecutiveList (Executive chairperson) {

    chair.setExecutive(chairperson);
    chair.left = chair;
    chair.right = chair;
}

public void insertLeftOfChair(Executive exec) {

    ExecutiveNode newExec = new ExecutiveNode();
    newExec.setExecutive(exec);
    chair.setLeft(newExec);

}

public boolean insertRightOfExec (Executive exec, String target) {
    cursor = chair;
    ExecutiveNode newExec = new ExecutiveNode();

    do { cursor = cursor.getLeft();
    if (cursor.getExecutive().equals(exec)) {
        newExec.setExecutive(exec);
        cursor.getRight().setLeft(newExec);
        newExec.setLeft(cursor);
        newExec.setRight(cursor.getRight());
        cursor.setRight(newExec);
        return true;
    }
    else {
        return false;
    }
    }       while (cursor.getExecutive().getExecutiveName() != target);


}

public boolean insertLeftOfExec (Executive exec, String target) {
    cursor = chair;
    ExecutiveNode newExec = new ExecutiveNode();
    do { cursor = cursor.getLeft();
        if (cursor.getExecutive().equals(exec)) {
            newExec.setExecutive(exec);
            cursor.getLeft().setRight(newExec);
            newExec.setRight(cursor);
            newExec.setLeft(cursor.getRight());
            cursor.setLeft(newExec);

            return true;
        }
        else {
            return false;
        }
    }       while (cursor.getExecutive().getExecutiveName() != target);
}

public boolean removeTargetExec(String name) {
    if (chair.equals(name)) {
        return false;
    }
    else {
        return false;
    }
}

public int removeByCorporation(String corporation) {
    int removed = 0;
    cursor = chair;
    do {
        if (cursor.getExecutive().getCompanyName().equals(corporation)) {
            cursor.setExecutive(null);
            cursor.getLeft();
            removed = removed + 1;
        }
    } while (removed > 0);

    return removed;
}

public void printByCorporation(String corporation) {

}

public void printAllClockwise() {

}

public void printAllCounterClockwise() {

}
    }

DEUXIÈME CLASSE

import java.util.Scanner;

    public class MeetingManager {
public static void main(String[] args) {

    // scanner to read the users input
    Scanner input = new Scanner(System.in);

    // strings to pass information about the chairperson
    String chairpersonName;
    String chairpersonCompany;

    // strings to pass information about executives other
    // than the chairperson
    String execName;
    String execCompany;
    String target;

    // holds information on whether on not an operation
    // was successful and how many executives were removed
    // for the remove by corporation command.
    boolean success;
    int numRemoved = 0;

    // prompts the user for information about the chairperson
    // and sets it to an executive object name chairperson
    System.out.println("Enter the name of the chairperson: ");
    chairpersonName = input.next();
    if (chairpersonName.length() < 1) {
        System.out.println("Please enter a full name");
    }
    System.out.println("Enter the company of the chairperson: ");
    chairpersonCompany = input.next();
    if (chairpersonCompany.length() < 1) {
        System.out.println("Please enter a full name");
    }
    Executive chairperson = new Executive(chairpersonName, chairpersonCompany);

    // creates a new ExecutiveList object and passes information
    // about the chairperson
    ExecutiveList list = new ExecutiveList(chairperson);

    // for loop to repeatedly print the menu and take instructions
    // from the user until they choose to exit.
    for (int i = 1; i > 0; i++) {
        ShowMenu();
        String option = input.next();

        // error message for improper input
        if (option.length() > 3) {
            System.out.println("You can only enter one option");
        }

        // insert left of chairperson
        else if (option.toUpperCase().equals("ILC")) {
            System.out.println("Enter the executives name: ");
            execName = input.next();
            System.out.println("Enter the executives company: ");
            execCompany = input.next();
            Executive newGuy = new Executive(execName, execCompany);
            list.insertLeftOfChair(newGuy);
            System.out.println("Insertion successful.");
        }

        // insert left of executive
        else if (option.toUpperCase().equals("ILE")) {
            System.out.println("Enter the executives name: ");
            execName = input.next();
            System.out.println("Enter the executives company: ");
            execCompany = input.next();
            Executive newGuy = new Executive(execName, execCompany);
            System.out.println("Enter the name of the target executive: ");
            target = input.next();

            success = list.insertLeftOfExec(newGuy, target);
            if (success == true) {
                System.out.println("Insertion successful.");
            }
            else {
                System.out.println("The executive could not be inserted.");
            }
        }


        // insert right of executive
        else if (option.toUpperCase().equals("IRE")) {
            System.out.println("Enter the executives name: ");
            execName = input.next();
            System.out.println("Enter the executives company: ");
            execCompany = input.next();
            Executive newGuy = new Executive(execName, execCompany);
            System.out.println("Enter the name of the target executive: ");
            target = input.next();

            success = list.insertRightOfExec(newGuy, target);
            if (success) {
                System.out.println("Insertion successful.");
            }
            else {
                System.out.println("The executive could not be inserted.");
            }
        }

        // remove target executive
        else if (option.toUpperCase().equals("RTE")) {
            System.out.println("Enter the name of the executive to remove: ");
            execName = input.next();
            success = list.removeTargetExec(execName);

            if (execName.equals(chairpersonCompany))
                list.removeTargetExec(execName);
            if (success) {
                System.out.println(execName + " has been removed from the meeting.");
            }
            else {
                System.out.println(execName + " could not be found.");
            }
        }

        // remove by corporation
        else if (option.toUpperCase().equals("RBC")) {
            System.out.println("Enter the name of the corporation to remove: ");
            execCompany = input.next();
            numRemoved = list.removeByCorporation(execCompany);
            if (execCompany.equals(chairperson.getCompanyName())) {
                System.out.println("Invalid command: cannot remove all employees from the chairperson's corporation");
            }
            else if (numRemoved < 1) {
                System.out.println("That corporation could not be found and no executives were removed.");
            }
            else {
                System.out.println(numRemoved + " executive(s) from " + execCompany + " have been removed from the meeting.");
            }
        }

        // prints by corporation
        else if (option.toUpperCase().equals("PBC")) {
            System.out.println("Enter the name of a corporation to display: ");
            execCompany = input.next();
            list.printByCorporation(execCompany);
        }

        // prints all counter-clockwise
        else if (option.toUpperCase().equals("PCC")) {

            list.printAllCounterClockwise();
        }

        // prints all clockwise
        else if (option.toUpperCase().equals("PCL")) {

            list.printAllClockwise();
        }

        else if (option.toUpperCase().equals("EXT")) {
            System.out.println("Terminating program...");
            break;
        }

        // Error message
        else {
            System.out.println("Please select a valid option.");
        }

    }

}



// displays menu and prompts user for input
public static void ShowMenu() {
    System.out.println("\nILC) Insert an executive to the left of the chairperson\nILE) Insert an executive to the left of a given executive\nIRE) Insert an executive to the right of a given executive\nRTE) Remove Target Executive");
    System.out.println("RBC) Remove By Corporation\nPBC) Print By Corporation\nPCC) Print all in counter-clockwise order\nPCL) Print all in clockwise order\nEXT) Exit the program\n\nSelect a menu option: ");
}

}

Enfin, merci à tous ceux qui donne toute sorte de suggestion ou de conseils ou de l'aide réelle de toute nature ou forme. Je sais que les gens se mettent en colère quand ils voient des questions de devoirs pour une raison quelconque, parce qu'ils pensent que l'étudiant leur demande de « faire leurs devoirs pour moi », mais ce n'est pas ce que je fais. Je voudrais simplement des conseils ou des conseils, je ne vous demande pas juste remplir les espaces vides pour moi et tout fixe (pas que je serais opposé à ce: P). Merci.

Était-ce utile?

La solution

Dans la méthode removeByCorporation, vous définissez juste l'exécutif null, mais étant donné que ce soit une liste doublement chaînée, ne pas vous pensez que vous devez définir les références de l'exécutif précédent et suivant, de sorte que la liste liée doublement n » pause t.

Autres conseils

L'astuce consiste à faire en sorte que, sur le fonctionnement TOUS, vous mettez à jour l'élément en cours de modification et les deux autres qui font référence (tout à fait haut la main dans une liste doublement liée, les deux qui font référence ce sont aussi les deux il fait référence).

Vérifiez chacun de vos méthodes, et veiller à ce que chacun vous mettez à jour 4 champs par changement -. Deux dans le sujet, et un chacun dans les deux qui sont liés du sujet

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top