链接计算java中税率的类

时间:2014-07-10 13:59:42

标签: java mismatch

此行中的类型不匹配:
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);
}

}

3 个答案:

答案 0 :(得分:2)

java.util.Map是一个接口,而不是一个类,并且无法使用new进行实例化。

你会想要选择一个具体的Map实现,比如HashMap。

但是,你也不能拥有原语的地图,所以需要使用盒装版的double,Double:

final Map<String, Double> taxRates = new HashMap<>(); 

答案 1 :(得分:1)

您不能在泛型类型声明中使用基元。您需要使用Map<String, Double>(大写字母D)代替。您还需要使用具体类HashMapMap的其他实现之一。

作为旁注,使用double不会为您提供准确的税务计算。请考虑使用BigDecimal

答案 2 :(得分:0)

Map是一个接口,你必须使用Type作为Map接口的实现(例如HashMap)。

再见 马库斯