Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 446


Previous 1060 Stories (530 Pages, 2 Per Page) Next

Java: switch Example - Random Insults

Go to all tips in Java Notes by Fred Swartz

The following class could be useful for generating random insults in response to erroneous user input.


switch Example - Random Insults

Formatting. Some of the cases are formatted on a single line. This is a common style when they do similar short actions. It makes the switch statements much easier to read.

Arrays? This version is written without using arrays, which would provide a better way to do this.

Overloading rand(). The rand() method is overloaded only to demonstrate this feature.

Separate logic from user interface. This program is separated into two files: one file contains the logic for generating the insult in a string. It knows nothing about the user interface, and could equally well be used in a dialog program (as in the test program below), console I/O, a GUI program, or a web-based application.

Look at code example:

Logic

  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
 63 
 64 
 65 
 66 
 67 
 68 
 69 
 70 
 71 
 72 
 73 
 74 
 75 
 76 
 77 
 78 
 79 
 80 
 81 
 82 
 83 
 84 
 85 
 86 
 87 
 88 
 89 
 90 
 91 
// File  : 1java/textgen/InsultGenerator1.java
// Pupose: Generates random insults.
// Author: Fred Swartz
// License:public domain
// Date  : 2005 May 16


public class InsultGenerator1 {

    //============================================ badInputInsult
    public static String badInputInsult() {
        String insult = "bad value from badInputInsult???";
        switch (rand(0, 1)) {
            case 0: insult = "What kind of "
                      + infoAdjective() + " "
                      + infoNoun()
                      + " is this, you "
                      + personAdjective() + " "
                      + person()
                      + "?";
                      break;

            case 1: insult = "Never enter this kind of "
                      + infoAdjective() + " "
                      + infoNoun()
                      + " again!!!!";
                      break;
        }
        return insult;
    }

    //==================================================== person
    public static String person() {
        String name = "bad value from person???";
        switch (rand(3)) {
            case 0: name = "idiot"   ; break;
            case 1: name = "imbecile"; break;
            case 2: name = "moron"   ; break;
        }
        return name;
    }

    //=========================================== personAdjective
    public static String personAdjective() {
        String adj = "bad value from infoAdjective???";
        switch (rand(4)) {
            case 0: adj = "clueless"; break;
            case 1: adj = "witless" ; break;
            case 2: adj = "stupid"  ; break;
            case 3: adj = "hopeless"; break;
        }
        return adj;
    }

    //============================================= infoAdjective
    public static String infoAdjective() {
        String adj = "bad value from infoAdjective???";
        switch (rand(5)) {
            case 0: adj = "revolting"  ; break;
            case 1: adj = "insulting"  ; break;
            case 2: adj = "meaningless"; break;
            case 3: adj = "useless"    ; break;
            case 4: adj = "idiotic"    ; break;
        }
        return adj;
    }

    //================================================== infoNoun
    public static String infoNoun() {
        String noun = "bad value from infoNoun???";
        switch (rand(4)) {
            case 0: noun = "nonsense"; break;
            case 1: noun = "crap"    ; break;
            case 2: noun = "swill"   ; break;
            case 3: noun = "garbage" ; break;
        }
        return noun;
    }

    //===================================================== rand
    // Returns random int in range 0...bound-1
    public static int rand(int bound) {
        return rand(0, bound-1);
    }

    //===================================================== rand
    // Returns random int in range low...high
    public static int rand(int low, int high) {
        return low + (int)(Math.random() * (high - low + 1));
    }
}

Main program

  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
// File  : 1java/textgen/TestTextGenerator1.java
// Pupose: Show some random insults.
// Author: Fred Swartz
// License:public domain
// Date  : 2005 May 16

import javax.swing.*;

public class TestTextGenerator1 {
    public static void main(String[] args) {
        String display;
        do {
            display = InsultGenerator1.badInputInsult()
                    + "\n\nWould you like another opinion?";
        } while (JOptionPane.showConfirmDialog(null, display) == JOptionPane.YES_OPTION);
    }
}

6444 bytes more | comments? | Printer Friendly Page  Send to a Friend | Score: 0
Posted by aalex on Tuesday, April 04, 2006 (00:00:00) (11331 reads)

Java Switch Statement - Overview and 27 examples

Go to all tips in Java Notes by Fred Swartz

The if statement allows you to select one of two sections of code to execute based on a boolean value (only two possible values). The switch statement allows you to choose from many statements based on an integer (including char) or enum value.


Usage switch statement in Java programming (by Fred Swartz)

Purpose of switch: select one of many possible statements to execute

Syntax example:

Syntax

switch (expr) {
  case c1:
        statements // do these if expr == c1
        break;
  case c2: 
        statements // do these if expr == c2
        break;
  case c2:
  case c3:
  case c4:         //  Cases can simply fall thru.
        statements // do these if expr ==  any of c's
        break;
  . . .
  default:
        statements // do these if expr != any above
}

Switch keywords

switch
The switch keyword is followed by a parenthesized integer expression, which is followed by the cases, all enclosed in braces.. The switch statement executes the case corresponding to the value of the expression. Normally the code in a case clause ends with a break statement, which exits the switch statement and continues with the statement following the switch. If there is no corresponding case value, the default clause is executed. If no case matched and there is no default clause, execution continues after the end of the switch statement.
case
The case keyword is followed by an integer constant and a colon. This begins the statements that are executed when the switch expression has that case value.
default
If no case value matches the switch expression value, execution continues at the default clause. This is the equivalent of the "else" for the switch statement. It is written after the last case be convention, and typically isn't followed by break because execution just continues out the bottom of switch if this is the last clause.
break
The break statement causes execution to exit to the statement after the end of the switch. If there is no break, execution flows thru into the next case. Flowing directly into the next case is almost always an error.

Example - Random comment

String comment;   // The generated insult.
int which = (int)(Math.random() * 3);  //  Result is 0, 1, or 2.

switch (which) {
    case 0:  comment = "You look so much better than usual.";
             break;
    case 1:  comment = "Your work is up to its usual standards.";
             break;
    case 2:  comment = "You're quite competent for so little experience.";
             break;
    default: comment = "Oops -- something is wrong with this code.";
}

Equivalent if statement

A switch statement can often be rewritten as an if statement in a straightforward manner. For example, the preceding switch statement could be written as follows. When one of a number of blocks of code is selected based on a single value, the switch statement is generally easier to read. The choice of if or switch should be based on which is more readable.

String comment;   // The generated insult.
int which = (int)(Math.random() * 3);  //  Result is 0, 1, or 2.

if (which == 0) {
    comment = "You look so much better than usual.";
} else if (which == 1) {
    comment = "Your work is up to its usual standards.";
} else if (which == 2) {
    comment = "You're quite competent for so little experience.";
} else {
    comment = "Oops -- something is wrong with this code.";
}

Defensive programming

Always include a default clause in your switch statement as a general policy of defensive programming - assume there will be bugs in your code and make sure they are caught.

Where to use switch?

The ability of switch to choose between many sections of code seems to make it more powerful than if. However, selecting sections of code depending on specific integer values turns out not to be very common. If you are handling specific coded values (eg, the number of the button that was clicked in a JOptionPane), or processing characters (whose codes are treated like numbers), you may find it useful.

Efficiency? Some compilers can produce more efficient code for certain switch statements than for equivalent if statements. I haven't bothered to test the Java compiler because, if there is a speed difference, it would be extremely small and the choice between switch and if should be based on readability.

Comments on switch

Java's switch statement, which was taken directly from C++ to increase its attractiveness to C++ programmers, is not well loved.

  • No ranges. It doesn't allow ranges, eg case 90-100:. Many other languages do.
  • Integers only. It requires integers and doesn't allow useful types like String. Many other languages do.
  • Error-prone. It is error-prone and a common source of bugs - forgetting break or default silently ignores errors. Some languages have eliminated these dangerous situations.

Copyleft 2005 Fred Swartz MIT License


Usage swithch statement in Java programming (by Fred Swartz)

Purpose of switch: select one of many possible statements to execute

Syntax example:

Syntax

switch (expr) {
  case c1:
        statements // do these if expr == c1
        break;
  case c2: 
        statements // do these if expr == c2
        break;
  case c2:
  case c3:
  case c4:         //  Cases can simply fall thru.
        statements // do these if expr ==  any of c's
        break;
  . . .
  default:
        statements // do these if expr != any above
}

Switch keywords

switch
The switch keyword is followed by a parenthesized integer expression, which is followed by the cases, all enclosed in braces.. The switch statement executes the case corresponding to the value of the expression. Normally the code in a case clause ends with a break statement, which exits the switch statement and continues with the statement following the switch. If there is no corresponding case value, the default clause is executed. If no case matched and there is no default clause, execution continues after the end of the switch statement.
case
The case keyword is followed by an integer constant and a colon. This begins the statements that are executed when the switch expression has that case value.
default
If no case value matches the switch expression value, execution continues at the default clause. This is the equivalent of the "else" for the switch statement. It is written after the last case be convention, and typically isn't followed by break because execution just continues out the bottom of switch if this is the last clause.
break
The break statement causes execution to exit to the statement after the end of the switch. If there is no break, execution flows thru into the next case. Flowing directly into the next case is almost always an error.

Example - Random comment

String comment;   // The generated insult.
int which = (int)(Math.random() * 3);  //  Result is 0, 1, or 2.

switch (which) {
    case 0:  comment = "You look so much better than usual.";
             break;
    case 1:  comment = "Your work is up to its usual standards.";
             break;
    case 2:  comment = "You're quite competent for so little experience.";
             break;
    default: comment = "Oops -- something is wrong with this code.";
}

Equivalent if statement

A switch statement can often be rewritten as an if statement in a straightforward manner. For example, the preceding switch statement could be written as follows. When one of a number of blocks of code is selected based on a single value, the switch statement is generally easier to read. The choice of if or switch should be based on which is more readable.

String comment;   // The generated insult.
int which = (int)(Math.random() * 3);  //  Result is 0, 1, or 2.

if (which == 0) {
    comment = "You look so much better than usual.";
} else if (which == 1) {
    comment = "Your work is up to its usual standards.";
} else if (which == 2) {
    comment = "You're quite competent for so little experience.";
} else {
    comment = "Oops -- something is wrong with this code.";
}

Defensive programming

Always include a default clause in your switch statement as a general policy of defensive programming - assume there will be bugs in your code and make sure they are caught.

Where to use switch?

The ability of switch to choose between many sections of code seems to make it more powerful than if. However, selecting sections of code depending on specific integer values turns out not to be very common. If you are handling specific coded values (eg, the number of the button that was clicked in a JOptionPane), or processing characters (whose codes are treated like numbers), you may find it useful.

Efficiency? Some compilers can produce more efficient code for certain switch statements than for equivalent if statements. I haven't bothered to test the Java compiler because, if there is a speed difference, it would be extremely small and the choice between switch and if should be based on readability.

Comments on switch

Java's switch statement, which was taken directly from C++ to increase its attractiveness to C++ programmers, is not well loved.

  • No ranges. It doesn't allow ranges, eg case 90-100:. Many other languages do.
  • Integers only. It requires integers and doesn't allow useful types like String. Many other languages do.
  • Error-prone. It is error-prone and a common source of bugs - forgetting break or default silently ignores errors. Some languages have eliminated these dangerous situations.

Copyleft 2005 Fred Swartz MIT License


5831 bytes more | 1 comment | Printer Friendly Page  Send to a Friend | Score: 4.5
Posted by aalex on Sunday, April 02, 2006 (08:14:38) (39586 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473| 472| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447|
446
| 445| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433| 432| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422| 421| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319| 318| 317| 316| 315| 314| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293| 292| 291| 290| 289| 288| 287| 286| 285| 284| 283| 282| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187| 186| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy