Методы и классы Java, как они сочетаются друг с другом? - PullRequest
1 голос
/ 05 мая 2009

В настоящее время я пишу программу для вводного класса Java. У меня есть две части моей головоломки. Надеюсь, это довольно простой ответ на вопрос.

Во-первых, вот что я пытаюсь использовать в качестве основной программы:

import java.util.Scanner;

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


    Scanner input = new Scanner(System.in);


    double newBalance = 0;
    double monthlyInterest = 0;
    int answer = 0;


    int i=1;
    while (i < 100) {
        System.out.print ("Please enter your ID: ");
        answer = input.nextInt();
        System.out.println(" ");
        if (answer >=0 && answer<10) 
        TheATMGame.runGame (answer);
        else
         System.out.println("Sorry, this ID is invalid.");
     }
    }


    public static void runGame(int id) {
      double amount = 0;
      int continueOn = 0;
      while (continueOn < 4) {
        ATMGame myATM = new ATMGame();
        Scanner input = new Scanner(System.in);
        System.out.println ("---Main menu--- ");
        System.out.println ("1: Check balance ");
        System.out.println ("2: Withdraw ");
        System.out.println ("3: Deposit ");
        System.out.println ("4: exit ");

        int answer = input.nextInt();

        if (answer == 1)
            System.out.println("your balance is: " + myATM.getBalance (id));
        else if (answer == 2){
            System.out.println("Enter an amount to withdraw: ");
            amount = input.nextInt();
            myATM.withdraw(amount, id);
        }
        else if (answer == 3)
{
            System.out.println("Enter an amount to deposit: ");
            amount = input.nextInt();
            myATM.deposit(amount, id);
        }
        else if (answer == 4)
            continueOn = 4;
        else if (answer > 4)
            System.out.println ("Please review the main menu. " +
                    "Your selection must be between 1-4.");
      }
    }

//ATM class (balance, annualInterestRate2, id2)
//ATM myATM = new ATM (20000, 4.5, 1122 );
//newBalance = myATM.withdraw(2500);
//newBalance = myATM.deposit(3000);
//monthlyInterest = myATM.getMonthlyInterestRate();
//System.out.println("Your current balance is: " + newBalance);
//System.out.println ("Your monthly interest rate is: " +  monthlyInterest);



}

Теперь вот все классы, которые я хочу включить в эту программу:

import java.util.Date;

public class ATMGame  {

    private double annualInterestRate = 0;
    private double balance = 0;
    private int id = 11;
    private int[] ids = {0,1,2,3,4,5,6,7,8,9};
    private int[] balances = {100,100,100,100,100,100,100,100,100,100};
    public Date dateCreated;


    public ATMGame() {

    }
    public ATMGame (double balance2, double annualInterestRate2, int id2) {
        balance = balance2;
        annualInterestRate = annualInterestRate2;
        id = id2;
        dateCreated.getTime();
    }


    public double getMonthlyInterestRate() {
        double monthlyInterest = annualInterestRate/12;
        return monthlyInterest;
    }


    public double withdraw(double amountWithdrawn, int id) { //This method withdraws money from the account

        double newBalance = balances[id] - amountWithdrawn;
        System.out.println("Your withdrawel has processed. New balance: " + newBalance);
        balances[id] = (int) newBalance;
        return newBalance ;

    }


    public double deposit(double amountDeposited, int id) { //This method deposits money in the account
        double newBalance = balances[id] + amountDeposited;
        System.out.println("Your deposit has processed. New Balance is: " + newBalance);
        balances[id] = (int) newBalance;
        return newBalance ;

    }

    public double getBalance(int id) {
        double myBalance = balances[id];
        balance = myBalance;
        return myBalance ;
    }


}

Когда я пытаюсь запустить первую программу, она говорит: «Основные классы не найдены». Как вы можете видеть, я написал строку «public void Main () ...», чтобы позаботиться об этом, но очевидно, что это не работает. Что я делаю не так?

Замена «public void Main () {» на «public static void main (String [] args) {» по-прежнему возвращает ошибку: «Основные классы не найдены». : /

http://img21.imageshack.us/img21/9016/asdfsdfasdfg.jpg

Мне удалось это исправить, изменив Main.java на TheATMGame.java, а затем запустив из ATMGame.java.

Ответы [ 5 ]

3 голосов
/ 05 мая 2009

Вы только что неправильно определили main. Должно быть:

public static void main(String[] args) {
    ....
}

Однако вы столкнетесь с некоторыми другими проблемами с вашим кодом. С первого взгляда ...

  • Ваш main () является функцией, так же как и runGame () - одно не должно определяться внутри другого.
  • Вы не можете назвать ваши два класса одинаково - вызывайте класс main () как-то иначе, чем ATMGame.
  • Не уверен, куда вы идете с ATM class (balance, annualInterestRate2, id2), но это недопустимая Java.
3 голосов
/ 05 мая 2009

Ваша подпись метода должна быть:

public static void main(String[] args) {
 ...
}

Это соглашение, которому вы должны следовать. Все остальное не сработает.

3 голосов
/ 05 мая 2009

Вы должны использовать:

public static void main(String[] args)

Вместо Main, потому что JVM сначала вызывает этот метод. Это соглашение.

1 голос
/ 05 мая 2009

В вашем классе ATMGame, замените следующее:

public void Main() {

с:

public static void main(String[] args) {

Кроме того, поскольку этот метод должен быть статическим, вам необходимо изменить следующее:

if (answer >=0 && answer<10)
     runGame (answer);
 else

с:

if (answer >=0 && answer<10)
     ATMGame.runGame (answer);
 else

Затем, наконец, вам нужно изменить сигнатуру метода rungame, чтобы она также была статической. Измените его с:

public void runGame(int id) {

до:

public static void runGame(int id) {
0 голосов
/ 05 мая 2009

Имена ваших открытых классов должны совпадать с именами файлов. Это не так на вашем скриншоте. Также убедитесь, что все компилируется правильно, а затем повторите попытку (используя общедоступный метод static void main (метод String [] args) {...}).

...