此行中的类型不匹配:
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);
}
}
答案 0 :(得分:2)
java.util.Map
是一个接口,而不是一个类,并且无法使用new
进行实例化。
你会想要选择一个具体的Map实现,比如HashMap。
但是,你也不能拥有原语的地图,所以需要使用盒装版的double,Double:
final Map<String, Double> taxRates = new HashMap<>();
答案 1 :(得分:1)
您不能在泛型类型声明中使用基元。您需要使用Map<String, Double>
(大写字母D)代替。您还需要使用具体类HashMap
或Map
的其他实现之一。
作为旁注,使用double
不会为您提供准确的税务计算。请考虑使用BigDecimal
。
答案 2 :(得分:0)
Map是一个接口,你必须使用Type作为Map接口的实现(例如HashMap)。
再见 马库斯