2013-02-20 3 views
1

Il me manque quelque chose ici. Mon programme se termine après avoir demandé à la personne de saisir son package de service. S'il vous plaît pardonnez le code redondant, je suis un débutant à cela et n'ai pas encore appris des méthodes plus efficaces que cela.Le programme se termine sans instruction (Codeur débutant)

import javax.swing.JOptionPane; 

public class InternetSP 
{ 
    public static void main(String[] args) 
    { 

     final double PACKA = 9.95, PACKB = 13.95, PACKC = 19.95; 
     final int PACKAC = 2, PACKBC = 1; 
     double chargecalc, entrycalc = 0; 
     String entry, pack; 

     pack = JOptionPane.showInputDialog(null, "Please enter your service" + " package (A,B or C)"); 
     if (pack == "A" || pack == "B") 
     { 
      entry = JOptionPane.showInputDialog(null, "Please enter your usage " + "hours."); 
      entrycalc = Double.parseDouble(entry); 
     } 

     if (pack == "A") 
     { 
      if (entrycalc > 10) 
      { 
       chargecalc = (PACKA + (entrycalc * PACKAC)); 
       JOptionPane.showMessageDialog(null, "Your total charges are: $" + chargecalc); 
      } 
      else 
      { 
       JOptionPane.showMessageDialog(null, "Your total charge is: $" + PACKA); 
      } 
     } 
     else if (pack == "B") 
     { 
      if (entrycalc > 20) 
      { 
       chargecalc = (PACKB + (entrycalc * PACKBC)); 
       JOptionPane.showMessageDialog(null, "Your total charges are:" + "$ " + chargecalc); 
      } 
      else 
      { 
       JOptionPane.showMessageDialog(null, "Your total charge is: $" + PACKB); 
      } 

     } 
     else if (pack == "C") 
     { 
      JOptionPane.showMessageDialog(null, "Your total charge is:" + "$ " + PACKC); 
     } 


     System.exit(0); 

    } 
} 
+0

Qu'est-ce qui vous fait penser qu'ils ne sont «pas pris en compte»? Qu'avez-vous essayé de déboguer? – geoffspear

+0

+1 pour être nouveau mais toujours poser une question bien! – Rich

Répondre

2

Vous devriez essayer comparer votre chaîne avec la méthode equals (ou mieux, equalsIgnoreCase).

Comme expliqué ici: Java String.equals versus ==, en Java, l'opérateur "==" vérifie si deux variables pointent vers le même objet, et non si elles ont la même valeur.

Donc, si vous écrivez

String a1 = "A"; 
String a2 = "A"; 

puis

if (a1 == a2) { 
    // This is not executed 
} 
if (a1.equals(a2)) { 
    // This is executed 
} 

Ceci est une distinction importante, il existe pour tous les objets, mais la plupart des gens sont trompés par des chaînes car il est l'un des premiers objets que vous comparez.

Habituellement, les gens commencent par comparer des nombres, et en Java, les nombres primitifs (int, long, etc ...) peuvent être comparés avec == parce qu'ils ne sont pas objet.

En espérant que cela aide, bonne chance!

+0

C'est certainement le cas! Je vous remercie! – Jim

Questions connexes