2014-02-04 2 views
0

Я пишу эту программу, которая позволит вам ввести сумму за каждую четверть, десять центов, никель и пенни и вернуть их сумму в $. После этого я хочу иметь возможность суммировать суммы в долларах, которые они производят, не вводя во все суммы монет во второй раз. Есть идеи? Заранее спасибо.Зачем мне вводить данные дважды?

import java.util.*; 

public class HalfDollar { 
    public static final Scanner CONSOLE = new Scanner(System.in); 

    public static void main(String[] args) { 
    quarterDollarAmount(); 
    dimeDollarAmount(); 
    nickelDollarAmount(); 
    pennyDollarAmount(); 
    totalDollarAmount(); 
    } 

    public static double quarterDollarAmount() { 
    System.out.print("Enter the number of quarters: "); 
    int quarterDollar = CONSOLE.nextInt(); 
    double amount = quarterDollar * 0.25; 
    System.out.println(quarterDollar + " Quarter are $" + amount); 
    return amount; 
    } 

    public static double dimeDollarAmount() { 
    System.out.print("Enter the number of dimes: "); 
    int dimeDollar = CONSOLE.nextInt(); 
    double amount = dimeDollar * 0.10; 
    System.out.println(dimeDollar + " Dimes are $" + amount); 
    return amount; 
    } 

    public static double nickelDollarAmount() { 
    System.out.print("Enter the number of nickels: "); 
    int nickelDollar = CONSOLE.nextInt(); 
    double amount = nickelDollar * 0.05; 
    System.out.println(nickelDollar + " Nickels are $" + amount); 
    return amount; 
    } 

    public static double pennyDollarAmount() { 
    System.out.print("Enter the number of pennies: "); 
    int pennyDollar = CONSOLE.nextInt(); 
    double amount = pennyDollar * 0.01; 
    System.out.println(pennyDollar + " Pennies are $" + amount); 
    return amount; 
    } 

    public static double totalDollarAmount() { 
    double quarter = quarterDollarAmount(); 
    double dime = dimeDollarAmount(); 
    double nickel = nickelDollarAmount(); 
    double penny = pennyDollarAmount(); 
    double total = quarter + dime + nickel + penny; 
    System.out.println("Total amount is $" + total); 
    return total; 
    } 
} 

ответ

1

Вы ничего не делаете с переменными. Просто называя их, а затем они выходят за рамки.

Вы можете либо сохранить возвращаемое значение в глобальной переменной, чтобы использовать ее позже.

private double quarter, dime, total; 

public static void main(String[] args) { 
    quarter = quarterDollarAmount(); 
    dime = dimeDollarAmount(); 
    total = (quarter + dime); 
    s.o.p(total); 

}

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

public static void main(String[] args) { 
    s.o.p(quarterDollarAmount() + dimeDollarAmount() + ....); 
} 

Чтобы получить значение до 2 знаков после запятой использовать что-то вроде следующего:

DecimalFormat format = new DecimalFormat("#.00"); 
Double total_formatted = Double.parseDouble(format.format(total)); 
s.o.p(total_formatted); 

Это усиливает значение имеют 2 знака после запятой с дополнительным количеством цифр слева от десятичной точки.

Конечная вещь, вы, вероятно, не хотите делать все статичным. Это в основном побеждает точку ориентации объекта, поскольку статическая переменная будет сохраняться во всех объектах класса.

1

Хммм, это пахнет мне как домашняя проблема. Если вы действительно тот, кто написал этот код, любое количество решений должно быть довольно очевидным. Но что бы ни случилось, я не буду судить о вашем путешествии. Поскольку вы возвращаете сумму из каждого метода, просто держите общее количество всех сумм по мере продвижения, а затем измените свой метод totalDollarAmount, чтобы взять общее количество в качестве входных данных, вместо того, чтобы просить его снова:

Смежные вопросы