Hi, I am new to java. i want to use a switch statement on operators that are in read as strings. Like "==","!=",">=","<=".

Please help me to do this as i cannot use even their ascii value of these operators to switch the cases.

Recommended Answers

All 4 Replies

Hi, I am new to java. i want to use a switch statement on operators that are in read as strings. Like "==","!=",">=","<=".

Please help me to do this as i cannot use even their ascii value of these operators to switch the cases.

Switch statements can only be used on ints or enums. For strings you are stuck with if-else-if blocks or stucturing your code in such as way as to use subclasses to provide the behavior instead of a switch.

That said, if you really want a switch, you can provide a string switching capability with an enum if you code it right. Here's an example just for giggles

import java.util.HashMap;
import java.util.Map;

public enum Operator {
    EQUALS("=="),
    NOT_EQUALS("!="),
    GREATER_EQUALS(">="),
    LESS_EQUALS("<=");
    
    private final String token;
    private static Map<String,Operator> tokenMap;
    
    private Operator(String token){
        this.token = token;
        map(token,this);
    }
    
    private static void map(String token, Operator op){
        if (tokenMap==null) tokenMap = new HashMap<String,Operator>();
        tokenMap.put(token,op);
    }
    
    public static Operator forToken(String token){
        return tokenMap.get(token);
    }
    
    public static void main(String[] args) {
        String[] operators = new String[]{"<=","==","!=",">="};
        for (String opString : operators){
            Operator op = Operator.forToken(opString);
            switch (op) {
                case EQUALS: 
                    System.out.println("equals"); 
                    break;
                case NOT_EQUALS: 
                    System.out.println("not equals"); 
                    break;
                case GREATER_EQUALS: 
                    System.out.println("greater than or equal to"); 
                    break;
                case LESS_EQUALS: 
                    System.out.println("less than or equal to");
                    break;
            }
        }
    }
}

For your case though, you may as well just use an if-else block.

hi.. can you help me fixing my program..

import java.io.*;
public class Vowels
{
    public static void main (String args[])throws IOException 
    {
        BufferedReader input = new BufferedReader (new InputStreamReader(System.in));
        char [] Vowel= {a, e, i, o, u,} ;
        int j,k;


        System.out.println("\tT H E  V O W E L S ");
        System.out.println("\t   (A E I O U)");
        System.out.println();


        System.out.print("Please enter a phrase: ");
        String phrase = input.readLine();
        System.out.println();


        char[] charray1 = phrase.toCharArray();
        char[] charray2 = Vowel.toCharArray();

        for(j = 0; j<charray1.length;j++)
        {

        for(k = 0; k<charray2.length;k++)

        {
            if(charray1[i]==charray2[k])
            {
                    switch(charray1[i])
                    {
                        case 1: System.out.print("A");break;
                        case 2: System.out.print("E");break;
                        case 3: System.out.print("I");break;
                        case 4: System.out.print("O");break;
                        case 5: System.out.print("U");break;
                        default: System.out.println(" ");
                    }


                }   
                System.out.print(charray1[i]);  break;  
        }   
    }       
   }
 }

i badly need this before july 21,

i badly need this before july 21,

Start a new post, use code tags, and give more explanations. What is wrong with your code? What is your question?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.