亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

我單獨注釋掉第一部分或者單獨注釋掉第二部分,結果都可以運行,但是我都不注釋的時候,就不顯示結果了,為什么?

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("吃主席套餐");

? ? ? ? }

? ? ? ??


正在回答

4 回答

你這個代碼問題應該是有不少的:

  1. 一個漢字不是一個字符,所以你用char today='日'應該好似有問題的。為什么不考慮用數字呢?int today='0'(西方國家一周的第一天是周日所以我用0表示第一天,這和計算機里的思維一致,比如數組的小表都是從0開始的)或者你也可以int today='7' 這都無所謂;

  2. switch()語句語法有問題。建議你用switch()語句之前先思考一下如果單純嵌套if()語句,即 iif() elseif() .....else()該如何實現。因為switch()語句本身就是一個條件嵌套語句。這么一比較你就知道了,在每一行case: 語句1后面都應該加上break;不然這個case() 語句之行完了后仍然要繼續執行下面所有的case()語句進行條件匹配(聯想一下if()elseif()..else()語句是不是不會這樣?)所以代碼應該是:


    int today=0;

    switch(today)

    {case(1):

    case(3);

    case(5):System.out.println("今天吃包子");break;

    /*多行條件匹配要將多個case語句都羅列出來并且在做后一行寫上條件滿足執行的語句,最后,break 語句是不能少。*/

    case(2):

    case(4):

    case(6):System.out.println("今天吃油條");break;

    case(0):System.out.println("今天吃主席套餐");break;/*最后一行case語句可以不寫break,因為條件匹配到最后一行,無路能否匹配程序都得跳出循環匹配了)*/

    /* 從上面一句說的邏輯里,你也看得出來有不合理的地方——如果所有條件(case())都沒有匹配成功程序該怎么辦呢?你沒有告訴程序,所以這是不合理的。但是if()..elseif()..else()語句沒有這個問題你想明白了嗎?所以正確的switch()語句的語法是將最后一個匹配條件改成default: ?... ?.

    這個例子的話就應該寫成default():System.out.println("今天吃主席套餐");*/

  3. 最后一個小建議:計算機(編程語言)說到底是舶來品,外國人發明的。在計算機世界里,除了字符串,建議不要使用漢字,你用漢語拼音都比漢字要好——很容易出現編碼問題。關于漢字編碼和英文字母的編碼問題,你也應該了解一下,這是不一樣的——漢字那么復雜,哪像a,b,c,d這么簡單用一個字節就能編碼出來呢?。



1 回復 有任何疑惑可以回復我~
#1

zhuifengtu

哦,那里switch(){case).....default:..;}語句沒有閉合,少寫了一個 }
2016-04-24 回復 有任何疑惑可以回復我~
#2

zhuifengtu

imooc評論不能刪除。。。。。應該是switch() { }這樣閉合。要不然就是初學者的低級錯誤了,在集成開發環境里是不會出現在這個問題的,因為編譯器會報錯會提示你
2016-04-24 回復 有任何疑惑可以回復我~
case的值有重復
0 回復 有任何疑惑可以回復我~

因為"吃包子"應該是 一三五,你寫成 一二三 了,這樣會跟下面的二重復。另外,建議你每個case輸出之后加break;

0 回復 有任何疑惑可以回復我~

? ? ? ? ? ? case '一':

? ? ? ? ? ? case '三':

? ? ? ? ? ? case '五':

? ? ? ? ? ? ? ? System.out.println("吃包子");


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

我單獨注釋掉第一部分或者單獨注釋掉第二部分,結果都可以運行,但是我都不注釋的時候,就不顯示結果了,為什么?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號