我單獨(dú)注釋掉第一部分或者單獨(dú)注釋掉第二部分,結(jié)果都可以運(yùn)行,但是我都不注釋的時(shí)候,就不顯示結(jié)果了,為什么?
public class HelloWorld {
? ? public static void main(String[] args) {
char today='日';
? ? ? ? switch(today){
? ? ? ? ? ? // case '一':
? ? ? ? ? ? // case '二':
? ? ? ? ? ? // case '三':
? ? ? ? ? ? // ? ? System.out.println("吃包子");
? ? ? ? ? ? case '二':
? ? ? ? ? ? case '四':
? ? ? ? ? ? case '六':
? ? ? ? ? ? ? ? System.out.println("吃油條");
? ? ? ? ? ? case '日':
? ? ? ? ? ? ? ? System.out.println("吃主席套餐");
? ? ? ? }
/************************************************************************************************/
public class HelloWorld {
? ? public static void main(String[] args) {
char today='日';
? ? ? ? switch(today){
? ? ? ? ? ? case '一':
? ? ? ? ? ? case '二':
? ? ? ? ? ? case '三':
? ? ? ? ? ? ? ? System.out.println("吃包子");
? ? ? ? ? ? // case '二':
? ? ? ? ? ? // case '四':
? ? ? ? ? ? // case '六':
? ? ? ? ? ? // ? ? System.out.println("吃油條");
? ? ? ? ? ? case '日':
? ? ? ? ? ? ? ? System.out.println("吃主席套餐");
? ? ? ? }
? ? ? ??
/**********************************************************************************************/
public class HelloWorld {
? ? public static void main(String[] args) {
char today='日';
? ? ? ? switch(today){
? ? ? ? ? ? case '一':
? ? ? ? ? ? case '二':
? ? ? ? ? ? case '三':
? ? ? ? ? ? ? ? System.out.println("吃包子");
? ? ? ? ? ? case '二':
? ? ? ? ? ? case '四':
? ? ? ? ? ? case '六':
? ? ? ? ? ? ? ? System.out.println("吃油條");
? ? ? ? ? ? case '日':
? ? ? ? ? ? ? ? System.out.println("吃主席套餐");
? ? ? ? }
? ? ? ??
2016-04-24
你這個(gè)代碼問(wèn)題應(yīng)該是有不少的:
一個(gè)漢字不是一個(gè)字符,所以你用char today='日'應(yīng)該好似有問(wèn)題的。為什么不考慮用數(shù)字呢?int today='0'(西方國(guó)家一周的第一天是周日所以我用0表示第一天,這和計(jì)算機(jī)里的思維一致,比如數(shù)組的小表都是從0開(kāi)始的)或者你也可以int today='7' 這都無(wú)所謂;
switch()語(yǔ)句語(yǔ)法有問(wèn)題。建議你用switch()語(yǔ)句之前先思考一下如果單純嵌套if()語(yǔ)句,即 iif() elseif() .....else()該如何實(shí)現(xiàn)。因?yàn)閟witch()語(yǔ)句本身就是一個(gè)條件嵌套語(yǔ)句。這么一比較你就知道了,在每一行case: 語(yǔ)句1后面都應(yīng)該加上break;不然這個(gè)case() 語(yǔ)句之行完了后仍然要繼續(xù)執(zhí)行下面所有的case()語(yǔ)句進(jìn)行條件匹配(聯(lián)想一下if()elseif()..else()語(yǔ)句是不是不會(huì)這樣?)所以代碼應(yīng)該是:
int today=0;
switch(today)
{case(1):
case(3);
case(5):System.out.println("今天吃包子");break;
/*多行條件匹配要將多個(gè)case語(yǔ)句都羅列出來(lái)并且在做后一行寫(xiě)上條件滿足執(zhí)行的語(yǔ)句,最后,break 語(yǔ)句是不能少。*/
case(2):
case(4):
case(6):System.out.println("今天吃油條");break;
case(0):System.out.println("今天吃主席套餐");break;/*最后一行case語(yǔ)句可以不寫(xiě)break,因?yàn)闂l件匹配到最后一行,無(wú)路能否匹配程序都得跳出循環(huán)匹配了)*/
/* 從上面一句說(shuō)的邏輯里,你也看得出來(lái)有不合理的地方——如果所有條件(case())都沒(méi)有匹配成功程序該怎么辦呢?你沒(méi)有告訴程序,所以這是不合理的。但是if()..elseif()..else()語(yǔ)句沒(méi)有這個(gè)問(wèn)題你想明白了嗎?所以正確的switch()語(yǔ)句的語(yǔ)法是將最后一個(gè)匹配條件改成default: ?... ?.
這個(gè)例子的話就應(yīng)該寫(xiě)成default():System.out.println("今天吃主席套餐");*/
最后一個(gè)小建議:計(jì)算機(jī)(編程語(yǔ)言)說(shuō)到底是舶來(lái)品,外國(guó)人發(fā)明的。在計(jì)算機(jī)世界里,除了字符串,建議不要使用漢字,你用漢語(yǔ)拼音都比漢字要好——很容易出現(xiàn)編碼問(wèn)題。關(guān)于漢字編碼和英文字母的編碼問(wèn)題,你也應(yīng)該了解一下,這是不一樣的——漢字那么復(fù)雜,哪像a,b,c,d這么簡(jiǎn)單用一個(gè)字節(jié)就能編碼出來(lái)呢?。
2016-04-23
2016-04-23
因?yàn)?吃包子"應(yīng)該是 一三五,你寫(xiě)成 一二三 了,這樣會(huì)跟下面的二重復(fù)。另外,建議你每個(gè)case輸出之后加break;
2016-04-23
? ? ? ? ? ? case '一':
? ? ? ? ? ? case '三':
? ? ? ? ? ? case '五':
? ? ? ? ? ? ? ? System.out.println("吃包子");