Déclaration de commutateur Java, pourcentage de réduction


Je suis coincé en essayant de créer une instruction switch pour mon programme. Pour une divulgation complète, il s'agit d'un devoir qui doit être fait demain. Je suis censé utiliser une instruction switch pour attribuer un taux d'actualisation pour la charge totale des CD vendus. L'or étant 15% de réduction, l'Argent 10%, le Bronze 5% et 0% pour les non-membres.

Voici mon programme jusqu'à présent. Je ne suis pas encore arrivé à la sortie, mais cela ne devrait pas être un problème tant que je ne peux pas passer ce commutateur.

public static void main(String[] args) {
   //Variables
    String firstName = null;
    String lastName = null;
    int songs;
    double cost;
    int membership;
    double serviceCharge;
    double productCharge;
    double baseCharge;
   //Keyboard input
   Scanner keyboard = new Scanner(System.in);

   //Gathering information from the user
   System.out.println("Enter your first name:");
   firstName = keyboard.nextLine();
   System.out.println("Enter your last name:");
   lastName = keyboard.nextLine();       
   System.out.println("Enter the number of songs downloaded:");
   songs = keyboard.nextInt();
   System.out.println("enter the cost per song:");
   cost = keyboard.nextDouble();
   System.out.println("Enter the status of membership:"
           + "3 represents a gold member"
           + "2 represents a silver member"
           + "1 represeents a bronze member:"
           + "0 represents a nonmember");
   membership = keyboard.nextInt();

   //Here is where the math starts
   baseCharge = cost * songs;

   serviceCharge = baseCharge;
   if (songs <= 8)
       serviceCharge = .07 * baseCharge;
   else if (songs > 8 && songs <= 15)
       serviceCharge = .04 * baseCharge;
   else if (songs > 15 && songs < 20)
       serviceCharge = .02 * baseCharge;
   else if (songs <= 20)
       serviceCharge = 0;

   productCharge = baseCharge + serviceCharge;

   switch (membership)
   {
       case 3: productCharge * .15;              
           break; 
       case 2: 
           break;
       case 1: 
           break;
       case 0:
           break;
       default:
           break;
   }

Évidemment vous impossible d'utiliser double dans une instruction switch, mais je suis perdu. Comment suis-je censé attribuer le taux d'actualisation en pourcentage sans utiliser un double? vous avez besoin de décimales pour faire le calcul correctement. Ou est-ce que je regarde cela complètement faux?

Une fois que j'ai terminé avec le reste du programme, voici à quoi devrait ressembler la sortie.

Entrez votre prénom: John Entrez votre nom de famille: DOE Entrez le nombre de chansons téléchargées: 8 Entrez le coût par chanson: 0.99 Entrez le statut d'un membre: 3 représente membre d'or 2 représente le membre silver 1 représente le membre bronze; 0 représente non: 1 Nom complet: John Doe Nombre de chansons téléchargées: 8 Prix par chanson: 0 0.99 Frais de service: 0,32 $ Total partiel: 7,60 dollars Taxe: 0,36 $ Frais total: 7 7.58

Désolé pour le mur de texte. Merci beaucoup d'avance pour toute aide que vous pouvez offrir.

Author: Akmar275, 2014-02-05

3 answers

Vous pouvez enregistrer les informations de réduction dans une variable double via switch/case:

   double discount = 0.0;//some default value

   switch (membership)
   {
       case 3: 
           discount = .15;              
           break; 
       case 2: 
           discount = .05
           break;
       //etc.
       default:
           discount = 0.0;//some default value
           break;
   }
   //now do the calculation using the discount variable
   double finalProductCharge = productCharge * (1.0 - discount);
 2
Author: But I'm Not A Wrapper Class, 2014-02-05 18:50:10

Si l'adhésion est de 3 or, 2 argent, 1 bronze) et 0 pour aucun vous pouvez simplement calculer le pourcentage basé sur que sans l'aide d'un switch, car elle est de 5% par niveau d'adhésion.

final double discountPerMemberLevel = 0.05;

productCharge = baseCharge + serviceCharge;

double discount = membership * discountPerMemberLevel;
productCharge *= 1 - discount;
 0
Author: Daniel Imms, 2014-02-05 18:44:21

productCharge * .15 n'est pas une déclaration, ce qui est ce que switch attend là-bas, donc le compilateur vous donne un message en disant autant. Une prochaine étape serait de vérifier la syntaxe de l'instruction switch. Quoi qu'il en soit, évaluer cette expression ne permet pas encore de réaliser quoi que ce soit.

 0
Author: clwhisk, 2014-02-05 18:52:12