2014-07-10 42 views
-2

试图创建一个能够从已创建的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

你不能这样。你基本上有一个伪装成一个类的结构化程序。 – ChiefTwoPencils

+0

我不知道你在问什么,但我怀疑那是因为你不知道。 –

回答

0

正如你提到你有三个差速器类用于处理税最好有三个diff方法的单个类并将amt作为参数到那个方法。使用扫描仪获得两个输入,如1个国家和2个计算量。这应该可以解决你的问题。

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); 
    } 
} 
+0

好的,我看到你在那里做了什么,但是最后一行的原因可能是什么?Map taxRates = new Map <>();在这条线 \t“多重标记 - 类型不匹配:给一个问题,以下消息无法从地图<>转换为 \t地图<字符串,双> \t - 无法实例类型地图<> \t - 无法实例Map user3821976

+0

我犯了一个错误,Map是一个接口,所以它不能被实例化,你需要使用一个HashMap,它是一个Map的实现,它可以解决你的问题。 – studro