由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 新手对switch语句的迷惑
相关主题
Test your PC speed一道java面试题 (转载)
折腾了一天,实在是绝望了,请教请教这段程序的输出是什么? 为什么
请教一个简单的问题大虾们能帮我看看这个程序问题出在哪么?
简单问题菜鸟问个简单的问题
interesting初学者code请教 (大牛莫取笑)
增加点难度 java core问一个java基础的初始化的问题,一直搞不明白 (转载)
NullPointerException 问题JAVA 考试题请教
问个primitive type的问题发现 synchronized 的一个问题
相关话题的讨论汇总
话题: advice话题: public话题: static话题: evil话题: lots
进入Java版参与讨论
1 (共1页)
d********o
发帖数: 1738
1
下面这段代码的结果为什么不是
See no evil.
而是
See no evil.
Speak no evil.
Hear no evil.
public class Advice {
public final static int LITTLE_ADVICE = 0;
public final static int MORE_ADVICE = 1;
public final static int LOTS_OF_ADVICE = 2;
public static void main(String[] args) {
dispenseAdvice(LOTS_OF_ADVICE);
}
public static void dispenseAdvice(int howMuchAdvice) {
switch(howMuchAdvice) { // (1)
case 2:
System.ou
g*****g
发帖数: 34805
2
If you don't break in each case, it will follow through.

【在 d********o 的大作中提到】
: 下面这段代码的结果为什么不是
: See no evil.
: 而是
: See no evil.
: Speak no evil.
: Hear no evil.
: public class Advice {
: public final static int LITTLE_ADVICE = 0;
: public final static int MORE_ADVICE = 1;
: public final static int LOTS_OF_ADVICE = 2;

a**e
发帖数: 5794
3
在这方面C#和Perl设计得更合理。

【在 g*****g 的大作中提到】
: If you don't break in each case, it will follow through.
d********o
发帖数: 1738
4
有点不明白,LOTS_OF_ADVICE的值自始至终是2, 为什么语句(3)和语句(4)也执行
了。什么是fallow through?follow through 是不是将所有的Case语句执行一遍!
case 1: System.out.println("Speak no evil.");也执行了, 难道说LOTS_OF_ADVICE
变量值会自动递减!

【在 g*****g 的大作中提到】
: If you don't break in each case, it will follow through.
w*****g
发帖数: 1415
5
他发现第一个Match之后,以后就不再比较,直接执行了,除非碰到Break;
g*****g
发帖数: 34805
6
If you ever learn assembly, you'll understand why this is natural.
"case blahblah" is a just a label. You can have as many labels as
you like but the flow won't change until you do jump ("break").
C used this design and C++, Java followed.

ADVICE

【在 d********o 的大作中提到】
: 有点不明白,LOTS_OF_ADVICE的值自始至终是2, 为什么语句(3)和语句(4)也执行
: 了。什么是fallow through?follow through 是不是将所有的Case语句执行一遍!
: case 1: System.out.println("Speak no evil.");也执行了, 难道说LOTS_OF_ADVICE
: 变量值会自动递减!

d********o
发帖数: 1738
7
Thank you so much!

【在 w*****g 的大作中提到】
: 他发现第一个Match之后,以后就不再比较,直接执行了,除非碰到Break;
d********o
发帖数: 1738
8
终于明白了,谢谢!
我以前用foxpro, 一看到switch,就想到do case语句,形成偷懒的习惯了!

【在 g*****g 的大作中提到】
: If you ever learn assembly, you'll understand why this is natural.
: "case blahblah" is a just a label. You can have as many labels as
: you like but the flow won't change until you do jump ("break").
: C used this design and C++, Java followed.
:
: ADVICE

l*******G
发帖数: 1191
9
matlab does not need breaks, yet many need, so it is language-dependent, you should be very
carefull
1 (共1页)
进入Java版参与讨论
相关主题
发现 synchronized 的一个问题interesting
Static就是个混球增加点难度 java core
Re: for helpNullPointerException 问题
问一个特别土的问题问个primitive type的问题
Test your PC speed一道java面试题 (转载)
折腾了一天,实在是绝望了,请教请教这段程序的输出是什么? 为什么
请教一个简单的问题大虾们能帮我看看这个程序问题出在哪么?
简单问题菜鸟问个简单的问题
相关话题的讨论汇总
话题: advice话题: public话题: static话题: evil话题: lots