将三个班级的信息合并到第四班

时间:2014-07-10 01:09:47

标签: java class

尝试创建一个类,该类将从已创建的3个类中提取信息(它们在输入特定数字后计算税率,所有三个都有不同的税)。其中一个类的示例如下。

通过System.out.print选择每个类的最佳方法是什么(“输入...然后输入要征税的金额?

或者应该将三个类合并为一个并再次通过System.out.print(“输入....所有输入的信息?

感谢。

package tax;

import java.util.Scanner;

public class china {

    private static Scanner reader;

    public static void main (String[] args) {
        //constants
        final double Tax_Rate = 0.20;  

        reader = new Scanner(System.in);

        //Variables 
        double purchases;  
        double taxespaid;   

        //Request Input 
        System.out.print("Enter your total amount of purchases in China:"); 
        purchases = reader.nextDouble();

        taxespaid = purchases * Tax_Rate;


        //Display Tax
        System.out.println("The refund amount you owed is $" + taxespaid);


    }

}

2 个答案:

答案 0 :(得分:1)

你不需要三个不同的类来做这样的事情。理想情况下,Classe层次结构应该用于不同的行为或功能。如果您只想存储数据,请使用数据结构。这听起来就像是将国家/地区名称映射到税率,因此Map就是您所追求的数据结构。

这是一个在代码中使用Map来实现您所追求目标的快速而肮脏的示例。

package tax;

import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;

public class Tax{

    private static Scanner reader;

    public static void main (String[] args) {
        //constants
        final Map<String, Double> taxRates = new HashMap<>(); 
        taxRates.put( "China", 0.2 );
        taxRates.put( "Japan", 0.1 );
        taxRates.put( "USA", 0.3 );

        reader = new Scanner(System.in);

        //Variables 
        double purchases;  
        double taxespaid;
        Double taxRate;   
        String country;

        System.out.print("Enter the country you are purchasing in: ");
        country = reader.nextLine();
        taxRate = taxRates.get( country );
        if( taxRate == null )
        {
            System.out.println( "Could not find country: " + country );
            return; 
        }

        //Request Input 
        System.out.print("Enter your total amount of purchases in " + country + " :"); 
        purchases = reader.nextDouble();

        taxespaid = purchases * taxRate;


        //Display Tax
        System.out.println("The refund amount you owed is $" + taxespaid);
    }
}

答案 1 :(得分:0)

正如你所提到的,你有三个用于处理税的差异类更好的是具有三个diff方法的单个类,并将amt作为参数传递给该方法。使用扫描仪获得两个输入,如1用于国家,2用于计算金额。这应该可以解决你的问题。