Ошибка домашней работы java .lang.IllegalAccessException - PullRequest
1 голос
/ 18 февраля 2020

В настоящее время я пытаюсь завершить sh мое первое задание по кодированию для Домашней работы, и Мой учитель и ТА совершенно бесполезны. Я застрял в этой проблеме и еще много дней в течение нескольких дней без ответа, кроме «Есть ошибка» всякий раз, когда я обращаюсь за помощью. Когда я пытаюсь запустить свой код в Eclipse, он работает отлично, и у меня нет замеченных ошибок. Но, когда я пытаюсь выполнить его из командной строки cmd, я получаю следующее сообщение:

Exception in thread "main" java.lang.IllegalAccessException: Class org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader can not access a member of class ATM with modifiers "public static"
    at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
    at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(Unknown Source)
    at java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)

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

import java.util.Scanner;

public class ATM {
    static Scanner read = new Scanner(System.in);       //created a scanner
    static String inpCard;
    static int listId = -1;     //created an int to store the id of the place in which the ATMCard is stored under
    static int withdrawlAMT = 0;

    public static void main(String[] args) {
        cardServices.initializeCardDB();        //enters the array's content
        // asks for card number
        if(cardServices.insertCard() == true) { 
            //checks for the pin to be correct
            if(pin.processPin() == true) {
                int x = account.select();
                //if the account selected is checkings, it = 1.
                if(x == 1) {
                    //asks user for how much to withdrawal.
                    money.moneyAmount();
                    // insures you dont have to little to withdrawal 
                    // that much, loops forever if you try to withdrawal
                    // to much.
                    if(security.verifyBalCheck(withdrawlAMT) == true) {
                        cardServices.processCard(withdrawlAMT, "checking");
                        dispense.dispensing();
                        System.out.println("Your new balance is " +cardServices.cardList[listId].checkBal);
                        System.out.println("");

                        cardServices.returnCard();
                    }
                }

                //if the account selected is savings, it = 2.
                if(x == 2) {
                    // asks user for how much to withdrawal
                    money.moneyAmount();
                    // insures you dont have to little to withdrawal
                    // that much, loops forever if you try to withdrawal
                    // to much.
                    if(security.verifyBalSaving(withdrawlAMT) == true) {
                        cardServices.processCard(withdrawlAMT, "savings");

                        dispense.dispensing();

                        System.out.println("Your new balance is " +cardServices.cardList[listId].savingsBal);
                        System.out.println("");

                        cardServices.returnCard();
                    }
                }
            }
        }
    }
}   




class ATMBal
{

    static int one = 50;
    static int five = 40;
    static int ten = 25;
    static int twenty = 20;
    static int total = 1000;

}


class ATMCard       //Creating the blueprint for all cards 
{

public String cardNum = " ";            //Made both cardNum and cardPin to string, to avoid octal numbers
public String cardPin = " ";
public float checkBal = 0;
public float savingsBal = 0;
}




class cardServices
{


    static ATMCard[] cardList = new ATMCard[5];
    public static void initializeCardDB()
    {


        cardList[0] = new ATMCard();
        cardList[0].cardNum = "123456789";      //added card 1's information
        cardList[0].cardPin = "1111";
        cardList[0].checkBal = 550;
        cardList[0].savingsBal = 1275;

        cardList[1] = new ATMCard();
        cardList[1].cardNum = "135792468";      //added card 2's information
        cardList[1].cardPin = "2097";
        cardList[1].checkBal = 90;
        cardList[1].savingsBal = -1;

        cardList[2] = new ATMCard();
        cardList[2].cardNum = "019283746";      //added card 3's information
        cardList[2].cardPin = "6194";
        cardList[2].checkBal = 7915;
        cardList[2].savingsBal = -1;

        cardList[3] = new ATMCard();
        cardList[3].cardNum = "675849302";      //added card 4's information
        cardList[3].cardPin = "0071";
        cardList[3].checkBal = 790;
        cardList[3].savingsBal = 211;

        cardList[4] = new ATMCard();
        cardList[4].cardNum = "347821904";      //added card 5's information
        cardList[4].cardPin = "9871";
        cardList[4].checkBal = 113;
        cardList[4].savingsBal = 78;

    }


    public static boolean insertCard()
    {

        System.out.print("Please insert your card: ");          //ask for card number
        ATM.inpCard = ATM.read.nextLine();                              //read card number


        for(int i = 0; i < 5; i++)                                  //start a loop
        {
            if(ATM.inpCard.compareTo(cardServices.cardList[i].cardNum) == 0)                    //checks all card numbers in the database, to see if they matched the input card
            {
                ATM.listId = i;
                return true;
            }



                if(i == 4)
                {
                    System.out.println("I'm sorry, your card was not found in our system.");
                    insertCard();
                    return false;
                }



        }
        return false;

    }



    public static void processCard(int withdrawalAmount, String account)                    //actual process withdrawing the ammount from the card
    {
        if(account.compareTo("checking") == 0)
        cardServices.cardList[ATM.listId].checkBal = cardServices.cardList[ATM.listId].checkBal - withdrawalAmount;

        if(account.compareTo("savings") == 0)
        cardServices.cardList[ATM.listId].savingsBal = cardServices.cardList[ATM.listId].savingsBal - withdrawalAmount;

    }



    public static void returnCard()                                     //returns the inpCard through a tempCard to insure all stored data is removed to increase security
    {

        System.out.println("Thank you for using Bank of America's new ACME ATMs, have a fantastic day!");
        String tempCard = ATM.inpCard;
        ATM.inpCard = null;
        System.out.println("Here is your card: " +tempCard);

    }

}


class pin
{

    public static boolean processPin()
    {
        System.out.print("Please enter your pin number ");              //asking for pin then read pin  
        String inpPinNum = ATM.read.nextLine();                                                     

        for(int i = 0; i < 4; i++)                                      //created loop
        {


        if(inpPinNum.compareTo(cardServices.cardList[ATM.listId].cardPin) == 0)
        {

        return true;    
        }
        else
        if(i < 3)                                                       //checks attempt amount to insure it is less than the allowed 4
        {
            System.out.println("Incorrect, please re-enter your pin:");
            inpPinNum = ATM.read.nextLine();

        }
        if(i == 3)                                                      //if the pin has been incorrectly 4 times, the user is told that the card will be eaten
        {
            System.out.println("You have entered your pin incorrectly to many times,"
            + " your card is being destroyed. Please go to any Bank of America to recieve a new card");
            eatCard();                                                  //the eatCard() command is called to eat the card
        }

        }

        return false;
    }


    public static void eatCard()                                                //deletes the card in the system, without returning the card
    {
        ATM.inpCard = null;
    }

}




class security
{

    public static boolean verifyBalCheck(int withdrawlAmt)              //checks checking balance
    {

        if(!(withdrawlAmt <=cardServices.cardList[ATM.listId].checkBal))
        {
            System.out.println("I'm sorry, you're current balance is: " +cardServices.cardList[ATM.listId].checkBal +", and as such you do not have enough to withdrawal that ammount.");
            money.moneyAmount();
            return false;

        }
        return true;

    }


    public static boolean verifyBalSaving(int withdrawlAmt)             //checks savings balance
    {


        if(!(withdrawlAmt <=cardServices.cardList[ATM.listId].savingsBal))
        {
            System.out.println("I'm sorry, you're current balance is: " +cardServices.cardList[ATM.listId].savingsBal +", and as such you do not have enough to withdrawal that ammount.");
            money.moneyAmount();
            return false;

        }
        return true;


    }


    public boolean verifyMachineBalance(int withdrawlAmt)       //checks ATM Machine Balance
    {
        if(withdrawlAmt <= ATMBal.total)
        {
            return true;
        }

        return false;
    }
}


class account
{
    public static int select()
    {
        System.out.print("Would you like to withdrawal from Checkings or Savings? ");
        String type = ATM.read.nextLine();          

        if(type.compareToIgnoreCase("checkings") == 0)  //checks to see if the string is checkings, returns 1 if so
        {
            return 1;
        }
        if(type.compareToIgnoreCase("savings") == 0)    //checks to see if the string is savings, returns 2 if so
        {
            return 2;
        }

    return 0;

    }
}




class money
{
    public static void moneyAmount()
    {
        System.out.print("How much would you like to withdrawl? ");
        ATM.withdrawlAMT = Integer.parseInt(ATM.read.nextLine());


    }

}



class dispense
{
    public static void dispensing()
    {
        ATMBal.total = ATMBal.total - ATM.withdrawlAMT;         //removes the withdrawalAmt from total

        System.out.println("");
        System.out.println("Your total withdrawl ammount is: " +ATM.withdrawlAMT);


        while(ATM.withdrawlAMT >= 20 && ATMBal.twenty > 0)      //checks to figure out the biggest bills the machine is able to dispense
        {
            ATM.withdrawlAMT = ATM.withdrawlAMT - 20;
            ATMBal.twenty = ATMBal.twenty - 1;
        }
        while(ATM.withdrawlAMT >= 10 && ATMBal.ten > 0)
        {
            ATM.withdrawlAMT = ATM.withdrawlAMT - 10;
            ATMBal.ten = ATMBal.ten - 1;
        }

        while(ATM.withdrawlAMT >= 5 && ATMBal.five > 0)
        {
            ATM.withdrawlAMT = ATM.withdrawlAMT - 5;
            ATMBal.five = ATMBal.five - 1;
        }
        while(ATM.withdrawlAMT >= 1 && ATMBal.one > 0)
        {
            ATM.withdrawlAMT = ATM.withdrawlAMT - 1;
            ATMBal.one = ATMBal.one - 1;
        }

        int twenties = 20 - ATMBal.twenty;                                      //Stoes how many of each will be dispensed
        int tens = 25 - ATMBal.ten;
        int fives = 40 - ATMBal.five;
        int ones = 50 - ATMBal.one;


        System.out.println("This is comprised of: " +twenties +" twenties, "        //prints how much of each bill is being dispensed
                                                    +tens +" tens, "
                                                    +fives +" fives, and "
                                                    +ones +" ones");



    }
}

...