尝试创建一个类,该类将从已创建的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);
}
}
答案 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用于计算金额。这应该可以解决你的问题。