Java/Language Basics/Switch

Материал из Java эксперт
Перейти к: навигация, поиск

Demonstrates the switch statement.

   <source lang="java">

//: c03:VowelsAndConsonants.java // // From "Thinking in Java, 3rd ed." (c) Bruce Eckel 2002 // www.BruceEckel.ru. See copyright notice in CopyRight.txt. public class VowelsAndConsonants {

 public static void main(String[] args) {
   for(int i = 0; i < 100; i++) {
     char c = (char)(Math.random() * 26 + "a");
     System.out.print(c + ": ");
     switch(c) {
       case "a":
       case "e":
       case "i":
       case "o":
       case "u": System.out.println("vowel");
                 break;
       case "y":
       case "w": System.out.println("Sometimes a vowel");
                 break;
       default:  System.out.println("consonant");
     }
   }
 }

} ///:~


 </source>
   
  
 
  



Free Flowing Switch Statement Example

   <source lang="java">

public class Main {

 public static void main(String[] args) {
   int i = 0;
   switch (i) {
   case 0:
     System.out.println("i is 0");
   case 1:
     System.out.println("i is 1");
   case 2:
     System.out.println("i is 2");
   default:
     System.out.println("Free flowing switch example!");
   }
 }

} /* i is 0 i is 1 i is 2 Free flowing switch example!

  • /
 </source>
   
  
 
  



Nested Switch Statements Example

   <source lang="java">

public class Main {

 public static void main(String[] args) {
   int i = 0;
   switch (i) {
   case 0:
     int j = 1;
     switch (j) {
     case 0:
       System.out.println("i is 0, j is 0");
       break;
     case 1:
       System.out.println("i is 0, j is 1");
       break;
     default:
       System.out.println("nested default case!!");
     }
     break;
   default:
     System.out.println("No matching case found!!");
   }
 }

} //i is 0, j is 1


 </source>
   
  
 
  



Switch Demo

   <source lang="java">

/* From http://java.sun.ru/docs/books/tutorial/index.html */ /*

* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* -Redistribution of source code must retain the above copyright notice, this
*  list of conditions and the following disclaimer.
*
* -Redistribution in binary form must reproduce the above copyright notice,
*  this list of conditions and the following disclaimer in the documentation
*  and/or other materials provided with the distribution.
*
* Neither the name of Sun Microsystems, Inc. or the names of contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
* ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
* OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")
* AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
* AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
* DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
* REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
* INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
* OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* You acknowledge that this software is not designed, licensed or intended
* for use in the design, construction, operation or maintenance of any
* nuclear facility.
*/

public class SwitchDemo {

   public static void main(String[] args) {
       int month = 8;
       switch (month) {
           case 1:  System.out.println("January"); break;
           case 2:  System.out.println("February"); break;
           case 3:  System.out.println("March"); break;
           case 4:  System.out.println("April"); break;
           case 5:  System.out.println("May"); break;
           case 6:  System.out.println("June"); break;
           case 7:  System.out.println("July"); break;
           case 8:  System.out.println("August"); break;
           case 9:  System.out.println("September"); break;
           case 10: System.out.println("October"); break;
           case 11: System.out.println("November"); break;
           case 12: System.out.println("December"); break;
       }
   }

}


 </source>
   
  
 
  



SwitchDemo 2

   <source lang="java">

/* From http://java.sun.ru/docs/books/tutorial/index.html */ /*

* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* -Redistribution of source code must retain the above copyright notice, this
*  list of conditions and the following disclaimer.
*
* -Redistribution in binary form must reproduce the above copyright notice,
*  this list of conditions and the following disclaimer in the documentation
*  and/or other materials provided with the distribution.
*
* Neither the name of Sun Microsystems, Inc. or the names of contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
* ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
* OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")
* AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
* AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
* DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
* REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
* INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
* OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* You acknowledge that this software is not designed, licensed or intended
* for use in the design, construction, operation or maintenance of any
* nuclear facility.
*/

public class SwitchDemo2 {

   public static void main(String[] args) {
       int month = 2;
       int year = 2000;
       int numDays = 0;
       switch (month) {
           case 1:
           case 3:
           case 5:
           case 7:
           case 8:
           case 10:
           case 12:
               numDays = 31;
               break;
           case 4:
           case 6:
           case 9:
           case 11:
               numDays = 30;
               break;
           case 2:
               if ( ((year % 4 == 0) && !(year % 100 == 0))
                    || (year % 400 == 0) )
                   numDays = 29;
               else
                   numDays = 28;
               break;
       }
       System.out.println("Number of Days = " + numDays);
   }

}


 </source>
   
  
 
  



Switch Demo 2: switch statement with different type of variable

   <source lang="java">

/*

* Copyright (c) Ian F. Darwin, http://www.darwinsys.ru/, 1996-2002.
* All rights reserved. Software written by Ian F. Darwin and others.
* $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in the
*    documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS""
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* 
* Java, the Duke mascot, and all variants of Sun"s Java "steaming coffee
* cup" logo are trademarks of Sun Microsystems. Sun"s, and James Gosling"s,
* pioneering role in inventing and promulgating (and standardizing) the Java 
* language and environment is gratefully acknowledged.
* 
* The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for
* inventing predecessor languages C and C++ is also gratefully acknowledged.
*/

public class Switch {

 static short s;
 static int   i;
 static long  L;
 public static void main(String[] args) { 
   switch(s) {
     case 0: System.out.println(s);
   }
   switch(i) {
     case 0: System.out.println(i);
   }
   switch(L) {    // EXPECT COMPILER ERROR
     case 0: System.out.println(L);
   }
 }

}


 </source>
   
  
 
  



Switch demo with empty case statement

   <source lang="java">

/*

* Copyright (c) 2000 David Flanagan.  All rights reserved.
* This code is from the book Java Examples in a Nutshell, 2nd Edition.
* It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
* You may study, use, and modify it for any non-commercial purpose.
* You may distribute it non-commercially as long as you retain this notice.
* For a commercial use license, or to purchase the book (recommended),
* visit http://www.davidflanagan.ru/javaexamples2.
*/

/**

* This class is much like the FizzBuzz class, but uses a switch statement
* instead of repeated if/else statements
*/

public class FizzBuzz2 {

 public static void main(String[] args) {
   for (int i = 1; i <= 100; i++) { // count from 1 to 100
     switch (i % 35) { // What"s the remainder when divided by 35?
     case 0: // For multiples of 35...
       System.out.print("fizzbuzz "); // print "fizzbuzz".
       break; // Don"t forget this statement!
     case 5:
     case 10:
     case 15: // If the remainder is any of these
     case 20:
     case 25:
     case 30: // then the number is a multiple of 5
       System.out.print("fizz "); // so print "fizz".
       break;
     case 7:
     case 14:
     case 21:
     case 28: // For any multiple of 7...
       System.out.print("buzz "); // print "buzz".
       break;
     default: // For any other number...
       System.out.print(i + " "); // print the number.
       break;
     }
   }
   System.out.println();
 }

}


 </source>