Использование методов, основанных на других методах - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь создать программу, которая сообщит вам минимальное количество монет, необходимое для внесения изменений, и оно должно быть модульным. В настоящее время он запрашивает ввод три раза и печатает количество монет, необходимое для суммы всех трех вводов. Я полагаю, что это связано с тем, что maxDimes опирается на maxQuarters, который зависит от ввода. Можно ли как-нибудь запустить эти методы только один раз? Я новичок в программировании и на этом сайте, поэтому я прошу прощения, если этот вопрос неясен или уже задавался.

     public static int input()
{
    System.out.println("Please enter amount of change under 100 cents: ");
    Scanner input = new Scanner(System.in);
    int change = input.nextInt();
    if (change%5<2)
    {
        change = change+(change%5);
    }
    else if(change%5>2)
    {
        change = change-(change%5);
    }
    return change;

}
public static int[] maxQuarters()
{
    int change = input();
    int quarters = change/25;
    int leftover = change-quarters;
    return new int[] {quarters, leftover};
}
public static int[] maxDimes()
{
    int first[] = maxQuarters();
    int change = first[1];
    int dimes = change/10;
    int leftover = change-dimes;
    return new int[] {dimes, leftover};  
}
public static int maxNickels()
{
    int second[] = maxDimes();
    int change = second[1];
    int nickels = change/5;
    return nickels;
}
public static void makeChange()
{
    int first[] = maxQuarters();
    int quarters = first[0];
    int second[] = maxDimes();
    int dimes = second[0];
    int nickels = maxNickels();
    System.out.println("The minimum number of coins you could use is: "+quarters+"quarters, "+dimes+" dimes and "+nickels+" nickels");

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

1 Ответ

0 голосов
/ 07 ноября 2018

Вас просят ввести три раза, потому что вы звоните input() внутри maxQuarters(). В maxDimes() и maxNickels() вы звоните maxQuarters(), поэтому также вызывается input().

Возможный способ решить эту проблему - вызвать input() в вашем main -методе и передать входные данные в качестве параметра другим вашим методам, например так:

public static int input() {
    System.out.println("Please enter amount of change under 100 cents: ");
    Scanner input = new Scanner(System.in);
    int change = input.nextInt();
    if (change % 5 < 2) {
        change = change + (change % 5);
    } else if (change % 5 > 2) {
        change = change - (change % 5);
    }
    return change;

}

public static int[] maxQuarters(int input) {

    int quarters = input / 25;
    int leftover = input - 25*quarters;
    return new int[]{quarters, leftover};
}

public static int[] maxDimes(int input) {
    int first[] = maxQuarters(input);
    int change = first[1];
    int dimes = change / 10;
    int leftover = change - 10*dimes;
    return new int[]{dimes, leftover};
}

public static int maxNickels(int input) {
    int second[] = maxDimes(input);
    int change = second[1];
    int nickels = change / 5;
    return nickels;
}

public static void makeChange(int input) {
    int first[] = maxQuarters(input);
    int quarters = first[0];
    int second[] = maxDimes(input);
    int dimes = second[0];
    int nickels = maxNickels(input);
    System.out.println("The minimum number of coins you could use is: " + quarters + " quarters, " + dimes + " dimes and " + nickels + " nickels");

}

public static void main(String[] args) {
    int input = input();
    makeChange(input);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...