Switch statement - str and ch comparisons

Hi everyone,
As usual lectures are a fat load of good when it comes to explaining anything, can't seem to get this working no matter how much I look over it.
Basically i'm having trouble looking at a string, determining what is at character three in the string, and then responding by saying what it is (for this I used an if statement in the switch, i'm kinda noob so I can't think of any other way and don't particularly want to change it if it can be helped).
The only problem i'm getting is it says "char cannot be dereferrenced" and points to this piece of code -- third.equals("a") || third.equals("e") ...and so on.
I have included the code for you to see...
thx in advance :)
/*Program offering users
*a switch statement choice
import java.util.*;
public class Switch
     public static void main (String[] args)
     Scanner kybd = new Scanner(System.in);
     System.out.println("Please enter a string");
     String input = kybd.nextLine();
     System.out.println("---Choose an option---");
     System.out.println("\n" + "1. Work out how many characters the word is");
     System.out.println("2. Display the first character");
     System.out.println("3. Display the last character");
     System.out.println("4. If longer than 3 chracters, is the 3rd a vowel or digit?");
     int choice = kybd.nextInt();
     int length = input.length();
     char third = input.charAt(2);
          switch(choice)
          case 1:
          System.out.println("The length of the phrase is: " + length);
          break;
          case 2:
          char firstLetter = input.charAt(0);
          System.out.println("The first letter is: " + firstLetter);
          break;
          case 3:
          char lastLetter = input.charAt(length-1);
          System.out.println("The last letter is: " + lastLetter);
          break;
          case 4:
          if (third.equals("a"))
          System.out.println("Third character is a vowel: " + third);
          else
               if (third.equals("0"))
               System.out.println("Third character is a digit: " + third);
               else
               System.out.println("That is neither a vowel or digit");
          break;
          default:
          System.out.println("That is not an acceptable choice");
}

Cheers mate, knew it had to be something obvious.
You would think they would teach us a bit more about ch comparisons before asking us to do it...there's no reference anywhere in lectures to that simple thing.
Thx for your help.

Similar Messages

  • Switch statement & system.read.in

    I am attempting to code a java text program that will calculate and print out 3 different mortgage's, I am trying to use a switch statement to select which mortgages I will output. I am trying a simple switch statement first and I am stuck, Can anyone help.
    //test switch case program
    import java.text.*;
    import java.io.IOException;
    //import java.util.*;
    //import java.lang.*;
    public class TestIfElse
    { // start of main method
    public static void main (String[] args)
              // throws java.io.IOExceptions
    {//start Main
    double interestRate = 0;
    int year;
    double loan;
    char choice;
    //enter # of years & find interest rate
    System.out.println("Enter Years:     7, 15, 30 only:");
    choice = (char) System.in.read(); //System.in.read();
    switch (choice)
    case '1' :     interestRate = 7.25 / 1200;
    System.out.println(+interestRate);
    break;
    case '2' :      interestRate = 8.50 / 1200;
    System.out.println(+interestRate);
                             break;
                   case '3': interestRate = 9.0 / 1200;
    System.out.println(+interestRate);
                             break;
    default : System.out.println("oops");
    }

    ok i couldnt get the switch to work so I tried this and now it wont read in ?? I am about ready to give up. can anybody help??
    //Import the class in the java.text.
    import java.text.*;
    import java.io.IOException;
    //Creates a public class named LarryInterest_f.
    public class larryInterest_f2
    {     //Start of main method using public static class members and void means it does not.
    //return a value,inside main parenthesis is created an array of strings holding arguments.
    public static void main(String[] args) throws IOException
    { //Start Main
    double principal = 200000;//(principal) double (64 bits) string variable created and set to 200000.
    double rate [ ] = {.0535, .055, .0575}; //(rate)double .
    double amount; // (amount) double(64 bit)string variable created.
    double moPay; //(moPay)double(64 bit)string variable created.
    double totalInt; //(64 bit)string variable created.
    int time; //(time) integer (32 bit) variable created and set 1 for total interest.
    int i; // Creates an integer value called i
    int [ ] term = {7,15,30}; // sets the term array of 7,15,30.
    int ratePlace; //pointer
    char answer;
    char totalMo;
    char test;
    char firstIterate;
    char secondIterate;
    System.out.println("What Choice would you Like\n");
    System.out.println("1-Interest rate of 5.35% for 7 years?\n");
    System.out.println("2-Interest rate of 5.55% for 15 years?\n");
    System.out.println("3-Interest rate of 5.75% for 30 years?\n");
    System.out.println("4-Quit\n");
    answer = (char)System.in.read();
    if (answer = 1) {
    ratePlace = 0;
    firstIterate = 4;
    secondIterate = 21;
    totalMo = 84;
    else
    if (answer = 2) {
    ratePlace = 1;
    firstIterate = 8;
    secondIterate = 24;
    totalMo = 180;
    else
    if (answer = 3) {
    ratePlace = 3;
    firstIterate = 15;
    secondIterate = 24;
    totalMo = 360;
    else
    System.out.println("Booga Wooga Chooga");
    amount = (principal + (principal * rate[ratePlace] ));
    moPay = (amount / totalMo);
    totalInt = (principal * rate[ratePlace]);
    dAmount = amount-moPay;
    intPay = totalInt / term[ratePlace];
              // Printout
    DecimalFormat df = new DecimalFormat("#.###,00");
    System.out.println("The Interest on $" + (df.format(principal) + " at" + rate[ratePlace] +"% for a
    loan to be paid off in "+term[ratePlace]+"years is " +"$"+ (df.format(totalInt) +"Dollars\n")));          
    System.out.println("Thek total amount of loan plus interest is $"+(df.formt(amount)+"Dollars.\n"));
    System.out.println("The Payments spread over"+totalMo+"months. would be $"
    +(df.format (moPay) + "Dollars a month for"+term[ratePlace]+"years.\n\n"));
    System.out.println("Would you like to see a payment schedule? y for Yes, or x to Exit");
    test = (char)System.in.read();
    if (test=='y')
    System.out.println("OK Here I Go");
    intPay = (intPay + (totalInt/term[ratePlace]));
    pmt = pmt +1;
    for (int a=1; a<firstIterate; a++){
    System.out.println(" Payment Schedule \n\n");
    System.out.println("Month               Interest                    Balance");
    for (int b=1;b<secondIterate;b++){
    System.out.println(pmt +"\t\t\t\t"+ df.format(intPay) + "\t\t\t"+df.format(dAmount));
    if(pmt <totMO){
    System.out.println(("This Page Complete Press Enter to Continue"));
    System.in.read();

  • I can no longer get my complete bank statements online, and my bank blames the Safari update and tells me to switch to Firefox.  Is there no other solution?

    I can no longer get my complete bank statements online, and my bank blames the latest Safari update and tells me to switch to Firefox.  Is there no other solution?

    I would feel dreadful If I thought had caused you a problem.   The warnings about Java are fully justified but providing you are communicating with a known source, and as I said, you disable it the moment you have finished, you should be safe.
    It might also be worth asking your bank what problem they have and would it be the same if you were using Firefox, for example.
    Like you, I am very security minded, in fact I won't even put my bank details on my Mac let alone run my account that way. 

  • Keyboard Input and switch statement error

    Hi,
    Below is a program to read an alphabet and check whether its a vowel/consonent using switch statement.
    Its always executin' the default stmt and not going into the case 1. This is because the ascii value of the character is being stored rather than the character.Could you please rectify this program?
    Thanks,
    vs
    import java.io.*;
    class vowel
    public static void main(String args[])throws Exception
    System.out.println("Enter a character:");
    char ch=(char)System.in.read();
    switch(ch)
    case 1: if(ch=='a')//||ch=='e'||ch=='i'||ch=='o'||ch=='u')
    System.out.println("The character is a vowel-a");
    break;
    default: System.out.println("The character is a consonent ! ");

         ch = Character.toLowerCase(ch);
         switch (ch) {
              case 'a' :
              case 'e' :
              case 'i' :
              case 'o' :
              case 'u' :
                   System.out.println("The character is a vowel: " + ch);
                   break;
              default :
                   System.out.println("The character is a consonent ! ");
         }

  • A function containing switch statement and foreach-object loop

    Hello Guys
    in my testdomain.lab, i have following five OUs in mt test AD structure:
    'OUusers', 'OUcomputers','OUservers','OUadministrators','OUhelpdesks'.
    i have created following five variables:
    $OUusers = 'ou=OUusers,dc=mytestdomain,dc=lab'
    $OUcomputers = 'ou=OUcomputers,dc=mytestdomain,dc=lab'and so on
    now i have created a function which gets this names as input &
    foreach-object creates the related OU.
    but the problem is sometimes when i run my function, maybe some of those five OUs
    currently exist in AD so this will cause a
    terminating error. 
    so i know i must use switch statement to define conditions like this:
    if $OUusers doesn't exist, execute this :  new-ADOrganizationalunit $OUusers
    if $OUcomputers doesn't exist, execute this :  new-ADOrganizationalunit $OUcomputers
    and so on...
    it's a long time which i am trying to create a
    function which contains such switch statement & properly forEach-object loop.
    i have studied switch and foreach-object loops , but this scenario is complicated for me & i was unable to get the correct code.
    Function createOUs {
    # combination of ForEach-Object and Switch statement here
    may someone give me the correct
    command please?
    thanks a lot

    Like this:
    $CompanyRoot=tha'ou=MyCompany, dc=mytestdomain,dc=lab'
    New-ADOrganizationalUnit -Name MyCompany -ErrorAction SilentlyContinue
    $ous='Users', 'Computers','Servers','Administrators','Helpdesk'
    foreach($ou in $ous){
    New-ADOrganizationalUnit -Name $ou -Path $companyroot -ErrorAction SilentlyContinue
    ¯\_(ツ)_/¯
    jrv, That can't be the solution because when you running a command which tries to creates an OU
    which already exist in AD, causes a
    terminating error which has two caveats:
    1- shows red error message on screen
    2- stops and doesn't continue to execute next lines of code
    Note that -ea silentlycontinue and -ea ignore have no effect on
    terminating errors and they cn't hide error messages, also script can't continue.
    i examined that.
    to get sure, run this function in your test AD & see the result:
    function createOUs {
    New-ADOrganizationalUnit -Name 'an-existing-ou' -Protected 0 -ea SilentlyContinue # you see that -ea silentlycontinue has no effect here
    New-ADOrganizationalUnit -Name '2ndOU' -Protected 0 -ea SilentlyContinue # you see that because the previous error has been a terminating error, command execution has been stopped and this 2nd OU hasn't been creatde
     another bad news is ( as i tested), if we query for an Organizational Unit which doesn't exist in AD , it generates a terminating error as well, so again here -ea has no effect.
    test this:
    PS C:\> Get-ADOrganizationalUnit -identity 'ou=nonesense,dc=yourDomain,dc=lab' -ea ignore
    error doesn't disapear ;-)

  • Switch statement and case variables

    Since constant variables do not have to be initialized when declared, they could be initialized later based on conditional logic and used to make the Switch statement more useful by using them as case labels. Well, sounds good in theory but I can't find anyway to make it work.
    I can't even get this to compile when the value of the case label is obvious at compile time :
    public class Switchtest
    public static void main(String[] args)
    int test = 0;
    final int x;
    x = 1;
    switch (test)
    case x: System.out.println("case x " );break;
    default: System.out.println("Default ");break;
    It gives an error about expecting x to be constant. I've tried static initializer blocks, etc. Is there anyway to have the case label variables initialized at runtime to make the Switch statement more useful?

    If jvm can use a hashtable for a switch statement. This hashtable is as constant as the compiled code, i.e., it can be defined at compile- time and it con not be modified runtime. Therefore a switch- case construction is faster than an else-if construction. But the strength of else- if is that it is more flexible. If you want to test on multiple variable values, you must use else-if
    class a
       public int method()
          int val = (int)(Math.random()*3);
          int x;
          if(val == 0)
             x = 1;
          else if(val == 1)
             x = 2;
          else
             x = 3;
          return x;
    class b
       public int method()
          int val = (int)(Math.random()*3);
          int x;
          switch (val)
             case 0:
                x = 1;
                break;
             case 1:
                x = 2;
                break;
             default:
                x = 3;
                break;
          return x;
    }b is bigger than a, but also faster. The technique used in a is more flexible, but b uses O(1) time where a uses O(n). (where n is the number of cases/else-ifs)

  • Multiple rawValues and switch statements - can you do this?

    Hi, a simple question (i hope)
    first i have to use javascript for his one....
    Im just starting a form and it will have about a dozen dropdown lists (over about 15 pages), each with quite a few variables (i feel a headache coming on already...)
    and what i would like to be able to do is have text fields at the end of the form (hidden) and insert data into them depending on what combination of choices the user has made in some or all of the dropdown lists.
    I know how to get a standard switch statement to work fine but can you (and if so what is the syntax like) do this with multiple lists - and what event would be best to link it to - calculate perhaps?
    the switch would be using stored variables and user entered data to produce composite output to the text field (so case: listA.rawvalue = 1 and listB.rawvalue = nine, and listC.rawvalue = cat etc etc [then] this.rawvalue = v1.value + listB.rawvalue etc.....
    I'm sure you get the issue im struggling with  - I've tried it a few ways but my syntax must be off somewhere
    can anyone assist with the syntax for this kind of thing --or a sample would be fantastic.
    cheers

    Hey Legallogic!
    I'm not 100% certain I understand what you are struggling with but I'd be happy to help.  If you could provide an alternate explanation of your issue I'll take a look and help you solve it.  What I *think* you're asking about is in reference to the test case of a switch statement.  Typically a switch would be used to test the value of one particular variable, so:
    switch (varTest)
         case "A":
              //Do something here
              break;
         case "B":
              //Do something else here
              break;
         default:
              //Do something cool here instead
              break;
    Are you asking how to use a single switch to test the value of multiple variables (or fields)?  If so, my recommendation would be to simply use and if/else if/else block as you can craft your test cases however you'd like for those.
    Like I said, I may not have understood the issue here so feel free to shoot me an email and I'll take a peek!
    Josh Boyle
    Cardinal Solutions Group
    [email protected]

  • Switch Statement again

    I am new to Java and am trying to learn how to use and understand the nuances involved in using the Switch statment.
    Yesterday, I received tremendous help, As a result, I am closer to understanding the switch statement and how it works.
    My program is designed to use 5 different input boxes. These represent a total for quizzes, homework assignments, 2 midterms, and a final exam.
    These are casted to double; then, they are added together and divided by five to obtain an average (the student's GPA). The GPA is then going to assigned a grade depending up the range in the If then statement.
    I intend on using a message box to inform the user of the GPA and another followed by another message box to show them their grade.
    I would like to incorporate the switch statement (so I can learn how to use it) to show them their grade.
    I know the code needs tweaking but this is what I have so far:
    import javax.swing.JOptionPane;
    public class Switchgrade{
    //declaration of class
    public static void main(String args[])
    //declaration of main
    String midone; String midtwo; String quiz; String homework; //declares variables to hold the grades, quiz and homework scores
    String last;
    double one; //first midterm
    double two; //second midterm
    double three;double four; double five; //final, quiz and homework scores
    double average; //GPA
    char a; char b; char c; char d; char f;char grade;
    midone = JOptionPane.showInputDialog("Please enter the first midterm"); //first score to add
    one = Double.parseDouble(midone);
    midtwo = JOptionPane.showInputDialog("please enter second midterm"); //second midterm to add
    two = Double.parseDouble(midtwo);
    last = JOptionPane.showInputDialog("please enter final exam score");//final exam score to add
    three = Double.parseDouble(last);
    quiz = JOptionPane.showInputDialog("please enter quiz score");//quiz score to add
    four = Double.parseDouble(quiz);
    homework= JOptionPane.showInputDialog("please enter homework score");//homework score to add
    five = Double.parseDouble(homework);
    average = (one + two+ three + four + five)/5; //average of all five scores
    if(average >= 90)
    grade = 'a';
    else
    if(average >= 80 )
    grade = 'b';
    switch (grade)
    case a:
    JOptionPane.showMessageDialog(null,"The total of all your scores is " + b+"\nYour final grade is an A");
    break;
    default:
    JOptionPane.showMessageDialog(null,"Sorry, you received a grade of " + b + ". \nYou failed.");
    break;
    System.exit(0);
    }//end of main
    }//end of class
    As you can see, I am only using two grades, just so I can learn to use it. However, when I go to compile this, I get this error message:
    constant expression required: case a:, with the ^ under the a.
    What does this error message me and how do I fix this.
    Thanks in advance for your help.

    case a:is trying to use a variable with the name "a" for the comparison. This is illegal in java
    what you want is
    case 'a':this will do a comparison against the char value 'a'

  • Beginner question regarding switch statements with arrays....

    Doing a little project for my beginner's object oriented programming course. I've written the following code, but the switch statement won't recognize my array values....I'm required to use a switch statement in my program, which will count various character types in an external file....any insight is appreciated.
    import java.io.*;
    public class MyProg
      public static BufferedReader inFile;
      public static void main(String[] args)
        throws IOException, StringIndexOutOfBoundsException
        String line;
        inFile = new BufferedReader(new FileReader("TME5Part1.dat3"));
          char UpperCase[]= {'A','B','C','D','E','F','G','H','I','J','K','L','M',
                                          'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};          
          char LowerCase[]=     {'a','b','c','d','e','f','g','h','i','j','k','l','m',
                                          'n','o','p','q','r','s','t','u','v','w','x','y','z'};
          char Digit[]= {'0','1','2','3','4','5','6','7','8','9'};
          char EndMark[]= {'!','.','?'};
          char MidMark[]= {',',':',';'};
        char symbol;                                                            
        int upperCaseCt = 0;                                             
        int lowerCaseCt = 0;
        int digitCt = 0;
        int endMarkCt = 0;
        int midMarkCt = 0;
          int spaceCt = 0;
          int otherCharCt = 0;
        line = inFile.readLine();          //read first line (priming read)
        while (line != null)               // Loop until end of data (empty line)
          for (int count = 0; count < line.length(); count++)  // Loop until end of line
            symbol = line.charAt(count);                    
                for (int i=0; i<=25;i++)                              
                        char uppercase=UpperCase;               //get array values for i
                        char lowercase=LowerCase[i];
                        if (i<=9) {char digit=Digit[i];}               
                        if (i<=2) {     char endmark=EndMark[i];     
                                            char midmark=MidMark[i];
                        switch(symbol)                                             
                                  case uppercase : upperCaseCt++;
                                            break;
                                  case lowercase : lowerCaseCt++;
                                                 break;
                                  case digit          : digitCt++;
                                                 break;
                                  case endmark     : endMarkCt++;
                                                 break;
                                  case midmark     : midMarkCt++;
                                                 break;
                                  case ' '          : spaceCt++;
                                                 break;
                                  default          : otherCharCt++;
                                                 break;
              line = inFile.readLine();                                   
         System.out.println("Number of uppercase letters = "+upperCaseCt);               
         System.out.println("Number of lowercase letters = "+lowerCaseCt);
         System.out.println("Nubmer of digits = "+digitCt);
         System.out.println("Number of end punctuation marks = "+endMarkCt);
         System.out.println("Number of mid punctuation marks = "+midMarkCt);
         System.out.println("Number of spaces = "+spaceCt);
         System.out.println("Number of other characters = "+otherCharCt);
    I was trying to do it this way rather than "case 'A':
    case 'B':
    case 'Z:" for each type of 'symbol'.
    Unfortunately, the switch statement is required or this would be easier with arrays and for loops...I'm not sure if my code is even possible. Thanks in advance =)
    Edited by: RiTarDid

    RiTarDid wrote:
    For sure it is the most straightforward way, but my curiosity is getting the better of me....I will most likely submit the program with the longer (value-by-value) switch method, as I haven't found anyone who can tell me how to properly reference an array value in a 'case'.Well, you can do this (basically):
    switch(some_array[some_index]) {
        case 'a':  blahblah
        case 'z':  blahblah
    }What you can't do is this:
    switch(some_scalar_value) {
      case a_whole_array:  blahblah
      case a_whole_another_array: blahblah
    }Because the latter isn't what "case" means.
    If you want to do something like the latter, use if/else statements. Here's a dirty little industry secret: people seldom use switch/case. if/else is a lot more common.
    Actually that dirty little secret isn't really particular dirty or particularly secret. It is, however, little.
    I just recall a suggestion to use arrays for any group that is more than 10 values in size;Well...sort of...
    You should use the expression of data that's appropriate for what the data is. If it's a collection of data of the same kind and an ordering, then an array or a java.util.List makes sense. If it's data that is of the same kind but no ordering and no duplicates are allowed, use a java.util.Set. (Etc. on this front.) If it's a collection of un-alike data, but which belongs in associated groups (e.g., a user's name, age, height, and whether s/he's married) then you should create a class that represents that logical grouping. Etc. If you have more than 10 individual data that can't be grouped or collected somehow, then chances are you need to rethink what's happening.
    so I wanted to see if an array could be employed for comparisons with the 'switch' statement. The program is simple enough, I'm just trying to flex my problem-solving muscle in different ways. :)
    thanks for replying, hope I can get a definite "yes, it can be done this way" or "no it can't" if there's anyone out there who knows.....The problem is that your example is contrived. So you can do a variety of things that fit into the contrivance, but they'd be weird things.
    In practice, you'd want to use the character classification methods in Character, if you wanted to characterize a bunch of characters. Or maybe a regular expression. There's no need to keep an array of characters to match against if you want to determine whether a particular character is upper case. In fact, that's the wrong way of doing things, because Character.isUpperCase is more likely to tell whether any character (not just stuff that's also an element of ASCII) qualifies as upper case.

  • HELP -menu using a switch statement

    Hello to all. I'm new to the Java world, but currently taking my first Java class online. Not sure if this is the right place, but I need some help. In short I need to write a program that gives the user a menu to chose from using a switch statement. The switch statement should include a while statement so the user can make more than one selection on the menu and provide an option to exit the program.
    With in the program I am to give an output of all counting numbers (6 numbers per line).
    Can anyone help me with this?? If I'm not asking the right question please let me know or point me in the direction that can help me out.
    Thanks in advance.
    Here is what I have so far:
    import java.util.*;
    public class DoWhileDemo
         public static void main(String[] args)
              int count, number;
              System.out.println("Enter a number");
              Scanner keyboard = new Scanner (System.in);
              number = keyboard.nextInt();
              count = number;
              do
                   System.out.print(count +",");
                   count++;
              }while (count <= 32);
              System.out.println();
              System.out.println("Buckle my shoe.");
    }

    Thanks for the reply. I will tk a look at the link that was provided. However, I have started working on the problem, but can't get the 6 numbers per line. I am trying to figure out the problem in parts. Right now I'm working on the numbers, then the menu, and so on.
    Should I tk this approach or another?
    Again, thanks for the reply.

  • Can't switch between  fill and outline.

    Here's the problem: I'm on an iMac, new, trying to use illustrator CS5. after using CS3 for a few years. In CS5, if I draw a shape, flat, in the illustration, then try to give it an outline, or change the outline, or do anything with the outline, I can't. If I click on the Shape tools in the toolbox and draw out an oval, for example, I can switch between outline and fill without any problems. Select shape, go to toolbox, select curved arrow for switching from one to the other. That's it. But if I draw a freehand shape, then try it, i can't do it. THIS IS A BIG CHANGE FROM PREVIOUS VERSIONS OF THE APP. GET IT? What is the problem? If it's something I have done, fine, tell me and I'll fix it. I tried calling Adobe support in Bangalore, and it took 30 minutes just to get the problem thoroughly appreciated by the techies. They just couldn't get the idea for half an hour! I had to go over it 4 or 5 times. And they couldn't come up with an answer. they were no help at all. I'm hoping the forum will yield better results. This is pathetic, guys. Your 90-day tech support is a worthless piece of crap, guys. The only tech support we have is this catch-as-catch-can forum. I've been using Illustrator since 1987, (illustrator 88) believe it or not, it's true. And I've always been able to get tech support to cure the ills. Not any more. Is that the way Adobe plans to offer tech support? if there were a way to contact Adobe Tech Support by going around Adobe Bangalore, i would use it. But, alas, I am stuck with this.

    Dear Monika and Mylenium: I figured out part of the problem, but not the solution: The shape I had drawn -and coudn't  switch between fil and stroke on-is one I had already done a gradient mesh on, too. I had later abandoned the gradient mesh by using the option key to delete mesh lines, but that didn't take the shape all the way back to its original flat state. So it wasn't a plain drawn shape any more. So how do I release the gradient mesh  to get back to  a flat shape? I'm also having trouble keeping the shapes in RGB or CMYK mode-they keep defaulting back to greyscale. Could that also be a symptom of using gradient mesh? Note: I'm using gradient mesh for the very first time now; I've never used it before. It seems to leave a lot of unexpected baggage behind. I would send a screen shot, but if I start up Grab or Voila, all the AI pallets go away, and that's half the information.  So how do I control gradient mesh?

  • How to convert switch statement into iif than else statement in SSRS

    Hi All;
    How do i convert switch statement into iif statement in ssrs
    =
    Switch(
    Fields!createdonValue.Value = Now(), "Today",
    Fields!createdonValue.Value = DateAdd("d",-1,Today()),"Yesterday",
    Fields!createdonValue.Value >= FORMATDATETIME(DateAdd(DateInterval.Day, -6,DateAdd(DateInterval.Day, 1-Weekday(today),Today)),DATEFORMAT.ShortDate) and
    Fields!createdonValue.Value <= FORMATDATETIME(DateAdd(DateInterval.Day, -0,DateAdd(DateInterval.Day, 1-Weekday(today),Today)),DATEFORMAT.ShortDate),"Last Week",
    Fields!createdonValue.Value >= FORMATDATETIME(DateAdd(DateInterval.Day, -13,DateAdd(DateInterval.Day, 1-Weekday(today),Today)),DATEFORMAT.ShortDate) and
    Fields!createdonValue.Value <= FORMATDATETIME(DateAdd(DateInterval.Day, -0,DateAdd(DateInterval.Day, 1-Weekday(today),Today)),DATEFORMAT.ShortDate),"Last Fortnight",
    Fields!createdonValue.Value >= DateValue(DateAdd("M",-1,DateAdd("D",-(Day(Now)-1),Now))) and
    Fields!createdonValue.Value <= DateValue(DateAdd("D",-1,DateAdd("D",-(Day(Now)-1),Now))),"Last Month",
    Fields!createdonValue.Value >= DateSerial(Year(Now()), 1, 1) and
    Fields!createdonValue.Value <= DateSerial(Year(Now()), 12, 31),"Year to Date"
    Any help much appreciated
    Thanks
    Pradnya07

    Not sure why you want to se IIF as Switch is more compact
    Anyways it will look like this
    =IIf(
    Fields!createdonValue.Value = Now(), "Today",IIf(
    Fields!createdonValue.Value = DateAdd("d",-1,Today()),"Yesterday",Iif(
    Fields!createdonValue.Value >= FORMATDATETIME(DateAdd(DateInterval.Day, -6,DateAdd(DateInterval.Day, 1-Weekday(today),Today)),DATEFORMAT.ShortDate) and
    Fields!createdonValue.Value <= FORMATDATETIME(DateAdd(DateInterval.Day, -0,DateAdd(DateInterval.Day, 1-Weekday(today),Today)),DATEFORMAT.ShortDate),"Last Week",IIf(
    Fields!createdonValue.Value >= FORMATDATETIME(DateAdd(DateInterval.Day, -13,DateAdd(DateInterval.Day, 1-Weekday(today),Today)),DATEFORMAT.ShortDate) and
    Fields!createdonValue.Value <= FORMATDATETIME(DateAdd(DateInterval.Day, -0,DateAdd(DateInterval.Day, 1-Weekday(today),Today)),DATEFORMAT.ShortDate),"Last Fortnight",IIf(
    Fields!createdonValue.Value >= DateValue(DateAdd("M",-1,DateAdd("D",-(Day(Now)-1),Now))) and
    Fields!createdonValue.Value <= DateValue(DateAdd("D",-1,DateAdd("D",-(Day(Now)-1),Now))),"Last Month",IIf(
    Fields!createdonValue.Value >= DateSerial(Year(Now()), 1, 1) and
    Fields!createdonValue.Value <= DateSerial(Year(Now()), 12, 31),"Year to Date")))))
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • Use of boolean variables in BPEL switch statements

    I have a workflow with a single boolean input parameter:
    <element name="input" type="boolean"/>
    I wish to use a switch statement within the workflow, based on the value of that boolean parameter.
    When I use the following XPath expression:
    bpws:getVariableData("input","payload","/tns:BooleanRequest/tns:input")
    I get the correct functionality, although I get the following BPEL compiler warning:
    " [bpelc] [Warning ORABPEL-10078]: return value of this expression may not be a boolean
    [bpelc] [Description]: in line 35 of "C:\eclipse\workspace\Boolean\Boolean.bpel", xpath expression "bpws:getVariableData("input","payload","/tns:BooleanRequest/tns:input")" used in <switch> may not return boolean type value, the xpath engine would automatically try to convert the return value to boolean..
    [bpelc] [Potential fix]: Please use one of the built-in boolean functions from xpath http://www.w3.org/TR/xpath#section-Boolean-Functions to convert the return value to boolean.."
    However, the boolean functions referenced do not appear to be relevant to a variable which is already of a boolean type. If I attempt to use the boolean() function in my XPath expression, I get rid of the compiler error, but the workflow now does not work as required.
    How can I get rid of the compiler warning and still get the required functionality, and/or am I doing the wrong thing?
    I am currently running on JBoss, with BPEL release 2.1.2 [build #1226].
    Thanks for any help or ideas.

    Hi Marlon,
    Thanks for that - I guess we have to accept the vagaries of XPath and the absence of type-checking for variables.
    I hadn't fully understood until I started investigating that I can assign ANY string to variable of type xsd:boolean, which has been the cause of some of the confusion for me - whether that value is then considered true or false depends on how you write your test condition.
    I tried with your condition, and it didn't seem to work (evaluated to true if the variable data was the string "true()", but otherwise it seemed to always evaluate to false.
    I also tried the following:
    condition="bpws:getVariableData('booleanVariable')=true()"
    but that evaluates to true for any string of length > 0.
    The only one I can get to consistently work is:
    condition="bpws:getVariableData('booleanVariable')=string(true())"
    although that means that variable data of "TRUE" will evaluate to false (may well be the correct behaviour, depending on how you're setting the boolean variable in the first place).

  • Compiler error when useing switch statements in an inner class

    I have defined several constants in a class and want to use this constans also in an inner class.
    All the constants are defined as private static final int.
    All works fine except when useing the switch statement in the inner class. I get the compiler error ""constant expression required". If I change the definition from private static final to protected static final it works, but why?
    What's the difference?
    Look at an example:
    public class Switchtest
       private static final int AA = 0;     
       protected static final int BB = 1;     
       private static int i = 0;
       public Switchtest()
          i = 0; // <- OK
          switch(i)
             case AA: break; //<- OK, funny no problem
             case BB: break; //<- OK
             default: break;
      private class InnerClass
          public InnerClass()
             i = 0; // <- OK: is accessible
             if (AA == i) // <- OK: AA is seen by the inner class; i  is also accessible
                i = AA + 1;
             switch(i)
                case AA: break; // <- STRANGE?! Fail: Constant expression required
                case BB: break; // <- OK
                default: break;
    }Thank's a lot for an explanation.

    Just a though:
    Maybe some subclass of Switchtest could decalare its own variable AA that is not final, but it can not declare its own BB because it is visible from the superclass. Therefore the compiler can not know for sure that AA is final.

  • Enum class not supported for switch() statement in 12.4 beta?

    Hi fellow 12.4 beta testers,
    It would appear "enum class" isn't supported for switch() statements in the 12.4 beta. This compiles fine under clang and g++. Will this be fixed for the final release? This currently causes compile errors for us, since __cplusplus >= 201103L evaluates to true, so our code uses "enum class" instead of plain "enum". It looks like the C++11 standard says it should be supported:
       Switching on enum class in C++ 0x - Stack Overflow
    Many thanks,
    Jonathan.
    $ cat test.cpp
    #include <iostream>
    enum class Ternary { KnownFalse = 0, KnownTrue = 1, Unknown = 2 };
    int main( void )
       Ternary foo;
       switch ( foo ) {
          case Ternary::KnownTrue:
          case Ternary::KnownFalse:
          case Ternary::Unknown:
             std::cout << "Success\n";
    $ clang++ -std=c++11 test.cpp
    $ g++ -std=c++11 test.cpp
    $ /opt/SolarisStudio12.4-beta_mar14-solaris-x86/bin/CC -std=c++11 test.cpp
    "test.cpp", line 8: Error: Cannot use Ternary to initialize integral type.
    "test.cpp", line 8: Error: Switch selection expression must be of an integral type.
    "test.cpp", line 9: Error: An integer constant expression is required for a case label.
    "test.cpp", line 10: Error: An integer constant expression is required for a case label.
    "test.cpp", line 11: Error: An integer constant expression is required for a case label.
    5 Error(s) detected.

    Thanks for reporting this problem! I have filed bug 18499900.
    BTW, according to the C++11 standard, the code is actually not valid. Section 6.4.2, switch statement, says an implicit conversion to an integral type is required, which is not the case for for a scoped enum (one using the "class enum" syntax). This limitation was raised in the C++ Committee as an issue to be fixed, and the C++14 standard makes the code valid.
    As a workaround, or to make the code conform to C++11, you can add casts to int for the enum variable and the enumerators.
    Message was edited by: Steve_Clamage

Maybe you are looking for

  • How To Make A "Good" PDF ?

    I've posted elsewhere about the hassles I'm having trying to get Export PDF to export my file to Word. In fact it won't even upload it. Bombs right at the very end. Looks like something wrong at the end of the file. I can't see what's wrong by lookin

  • Slow sync speed ipod touch 3G

    I have a new ipod touch 3g 3.1.2 32gb and it is almost filled up, and every time I sync to iTunes (ver. 9) it takes forever to backup!? I have over 450GB of free space on my external hard drive, can I change it so this is the drive to backup onto? My

  • Rough goods receipt into SAP

    I want to post Rough Goods Receipt ( RGR ) with an IDOC 1 . Do we have any Standard IDOC to post RGR 2 . Any BAPI available to post RGR through interface 3 . HOW to post RGR with custom IDOC Any pointers will be highly appreciated. Thanks V

  • How to copy datas from a table to a file.

    Hi, Can Someone help me how to do this using queries or procedures. I want to copy the datas from the table to a flat file (eg. text or excel). example: CREATE TABLE emp (FCST_DATE DATE, LEVEL1 VARCHAR2(2000) , Sal NUMBER, Insert into emp (FCST_DATE,

  • Extract String after Last "/"

    Hi Gurus: I have document path recorded from log files, which I need to feed to Lumira for Data Analysis. What we want is just the document name and not the entire path. I was able to extract/extrapolate that in excel as "=RIGHT(A1,LEN(A1)-(FIND("@",