此行中的类型不匹配:final Map<String, Double> taxRates = new Map<>();
很明显,我做错了什么,搞不清楚是什么。
该代码应该能够计算不同国家的税率。感谢
package tax;
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
public class application{
private static Scanner reader;
public static void main (String[] args) {
//constants
final Map<String, double> taxRates = new Map<>();
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);
}
}
java.util.Map
是一个接口,而不是类,不能用new
实例化。
您将希望选择Map的具体实现,如HashMap。
然而,你也不能有基元的映射,所以需要使用double的盒装版本,double:
final Map<String, Double> taxRates = new HashMap<>();
不能在泛型类型声明中使用基元。您需要使用Map<String, Double>
(大写D(。您还需要使用具体类HashMap
或Map
的其他实现之一。
附带说明一下,使用double
不会为您提供准确的税务计算。请考虑BigDecimal
。
Map是一个接口,您必须使用作为Map接口(例如HashMap(实现的Type。
再见,Markus