2014-07-10 68 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