switch statement

my code is skipping my switches.

Page 1 of 1

3 Replies - 8870 Views - Last Post: 10 August 2005 - 04:15 PM Rate Topic: -----

#1 gm0ngler  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 2
  • Joined: 04-August 05

switch statement

Posted 04 August 2005 - 03:39 PM

Hi, this is my first post, hopefully someone can help me. My code runs ok except my nested switches are skipped over. eg. when I type in an abbreviation for a state begining with the letter A it skips over those choices and goes to D for Delaware. States that do not have a nested switch work ok. What am I missing within those other cases? THANKS!!!
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class states
{
    //String abbreviation;
    //String state;
    
    //final String AL = "Alabama(AL)";
    //final String AK = "Alaska(AK)";
    //final String AR = "Arizona(AR)";
    static JFrame outputFrame;
    static JButton submit;
    static JButton quit;
    static JTextField stateAbbr;
    static JLabel state;
    
    
    public static class ButtonHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent event)
        {
            String stateEntered;
            stateEntered = event.getActionCommand();
            if (stateEntered.equals("Submit"))
            {
                String abbreviation;
                abbreviation = (stateAbbr.getText());
                //System.out.println(abbreviation);
                char abbr = abbreviation.charAt(0);
                char abbr2 = abbreviation.charAt(1);
                switch (abbr)
                {
                    case 'A': case 'a':
                    //System.out.println("a entered");
                    switch (abbr2)
                    {
                        case 'L': case 'l':
                        state.setText("Alabama");
                        break;
                        case 'K': case 'k':
                        state.setText("Alaska");
                        break;
                        case 'R': case 'r':
                        state.setText("Arizona");
                        break;
                    }//end switch A
                    case 'C': case 'c':
                    switch (abbr2)
                    {
                        case 'A': case 'a':
                        state.setText("California");
                        break;
                        case 'O': case 'o':
                        state.setText("Colorado");
                        break;
                        case 'T': case 't':
                        state.setText("Conneticut");
                        break;
                    }//end case C
                    case 'D': case 'd':
                    state.setText("Delaware");
                    break;
                    case 'F': case 'f':
                    state.setText("Florida");
                    break;
                    case 'G': case 'g':
                    state.setText("Georgia");
                    break;
                    case 'H': case 'h':
                    state.setText("Hawaii");
                    break;
                    case 'I': case 'i':
                    switch(abbr2)
                    {
                        case 'D': case 'd':
                        state.setText("Idaho");
                        break;
                        case 'L': case 'l':
                        state.setText("Illinois");
                        break;
                        case 'N': case 'n':
                        state.setText("Indiana");
                        break;
                        case 'A': case 'a':
                        state.setText("Iowa");
                        break;
                    }//end case I
                    case 'K': case 'k':
                    switch(abbr2)
                    {
                        case 'S': case 's':
                        state.setText("Kansas");
                        break;
                        case 'Y': case 'y':
                        state.setText("Kentucky");
                        break;
                    }//end case K
                    case 'L': case 'l':
                    state.setText("Lousiana");
                    break;
                    case 'M': case 'm':
                    switch(abbr2)
                    {
                        case 'E': case 'e':
                        state.setText("Maine");
                        break;
                        case 'D': case 'd':
                        state.setText("Maryland");
                        break;
                        case 'A': case 'a':
                        state.setText("Massachusetts");
                        break;
                        case 'I': case 'i':
                        state.setText("Michigan");
                        break;
                        case 'N': case 'n':
                        state.setText("Minnesota");
                        break;
                        case 'S': case 's':
                        state.setText("Mississippi");
                        break;
                        case 'O': case 'o':
                        state.setText("Missouri");
                        break;
                        case 'T': case 't':
                        state.setText("Montana");
                        break;
                    }//end case M
                    case 'N': case 'n':
                    switch(abbr2)
                    {
                        case 'E': case 'e':
                        state.setText("Nebraska");
                        break;
                        case 'V': case 'v':
                        state.setText("Nevada");
                        break;
                        case 'H': case 'h':
                        state.setText("New Hampshire");
                        break;
                        case 'J': case 'j':
                        state.setText("New Schmuckzie");
                        break;
                        case 'M': case 'm':
                        state.setText("New Mexico");
                        break;
                        case 'Y': case 'y':
                        state.setText("New York");
                        break;
                        case 'C': case 'c':
                        state.setText("North Carolina");
                        break;
                        case 'D': case 'd':
                        state.setText("North Dakota");
                        break;
                    }//end case N
                    case 'O': case 'o':
                    switch(abbr2)
                    {
                        case 'H': case 'h':
                        state.setText("Ohio");
                        break;
                        case 'K': case 'k':
                        state.setText("Oklahoma");
                        break;
                        case 'O': case 'o':
                        state.setText("Oregon");
                        break;
                    }//end case O
                    case 'P': case 'p':
                    state.setText("Pennyslavania");
                    break;
                    case 'R': case 'r':
                    state.setText("Rhode Island");
                    break;
                    case 'S': case 's':
                    switch(abbr2)
                    {
                        case 'C': case 'c':
                        state.setText("South Carolina");
                        break;
                        case 'D': case 'd':
                        state.setText("South Dakota");
                        break;
                    }//end case S
                    case 'T': case 't':
                    switch(abbr2)
                    {
                        case 'N': case 'n':
                        state.setText("Tennessee");
                        break;
                        case 'X': case 'x':
                        state.setText("Texas");
                        break;
                    }//end case T
                    case 'U': case 'u':
                    state.setText("Utah");
                    break;
                    case 'V': case 'v':
                    switch(abbr2)
                    {
                        case 'T': case 't':
                        state.setText("Vermont");
                        break;
                        case 'A': case 'a':
                        state.setText("Virginia");
                        break;
                    }//end case V
                    case 'W': case 'w':
                    switch(abbr2)
                    {
                        case 'A': case 'a':
                        state.setText("Washington");
                        break;
                        case 'V': case 'v':
                        state.setText("West Virginia");
                        break;
                        case 'I': case 'i':
                        state.setText("Wisconsin");
                        break;
                        case 'Y': case 'y':
                        state.setText("Wyoming");
                        break;
                    }//end case W
                    
                    
                }//end switch
                
            }//end if
            else if (stateEntered.equals("quit"))
            {
                System.exit(0);
            }
            
        }
        public static void main(String[]args)
        {
            
            Container outputPane;
            ButtonHandler event;
            
            JButton quit;
            
            outputFrame = new JFrame();
            outputPane = outputFrame.getContentPane();
            outputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            outputFrame.setSize(300,100);
            outputPane.setLayout(new FlowLayout());
            
            submit = new JButton("Submit");
            quit = new JButton("quit");
            stateAbbr = new JTextField(2);
            state = new JLabel();
            event = new ButtonHandler();
            
            
            submit.addActionListener(event);
            quit.addActionListener(event);
            
            outputPane.add(stateAbbr);
            outputPane.add(submit);
            outputPane.add(quit);
            outputPane.add(state);
            outputFrame.setVisible(true);
        }
        
}} 


Is This A Good Question/Topic? 0
  • +

Replies To: switch statement

#2 Jhin  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 8
  • View blog
  • Posts: 257
  • Joined: 06-July 05

Re: switch statement

Posted 05 August 2005 - 05:45 AM

Java doesn't allow strings as a switch operator...

Quote

The switch expression must be of type char, byte, short, or int. All case labels must be constant expressions—the expressions must contain only literals or named constants initialized with constant expressions—and must be assignable to the type of the switch expression.


I would recommend putting your variables into an array and then using the numbers as a reference in your case statment...you can find a few examples here:

Tech Recipes

Control Flow Statements

Wait...in my research I have found a case statment that work with strings. I was under the impression that it wasn't possible. Give me a second and I'll add more once I've taken a closer look @ your code.

well, the first thing I noticed right away is that you are missing your break statments that come after the second case...like so:

	case 'A':
   	 case 'a':
      //System.out.println("a entered");
      switch (abbr2)
      {
     	 case 'L':
     	 case 'l':
        state.setText("Alabama");
        break;
     	 case 'K':
     	 case 'k':
        state.setText("Alaska");
        break;
     	 case 'R':
     	 case 'r':
        state.setText("Arizona");
        break;
      }//end switch A
      break; 
//missing this break, 
//which is needed to keep 
//from slipping to the next case
   	 case 'C':


I'll keep looking though... I'm at work and don't have my java compiler here so I can't see if that's the only error....

This post has been edited by Jhin: 05 August 2005 - 06:12 AM

Was This Post Helpful? 0
  • +
  • -

#3 malkiri  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 3
  • View blog
  • Posts: 364
  • Joined: 29-March 01

Re: switch statement

Posted 05 August 2005 - 06:40 AM

Quote

Java doesn't allow strings as a switch operator...

Those are characters, not strings. They're valid.

You don't have break statements after the cases with switches nested in them:

switch (abbr)
               {
                   case 'A': case 'a':
                   //System.out.println("a entered");
                   switch (abbr2)
                   {
                       case 'L': case 'l':
                       state.setText("Alabama");
                       break;
                       case 'K': case 'k':
                       state.setText("Alaska");
                       break;
                       case 'R': case 'r':
                       state.setText("Arizona");
                       break;
                   }//end switch A
// Right here:
                   break;

                   case 'C': case 'c':
                   switch (abbr2)
                   {
...

Was This Post Helpful? 0
  • +
  • -

#4 gm0ngler  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 2
  • Joined: 04-August 05

Re: switch statement

Posted 10 August 2005 - 04:15 PM

Fantastic! Thanks alot. Adding the break; //s worked.
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1