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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java中goto語句的替代方法

Java中goto語句的替代方法

冉冉說 2019-10-18 11:10:34
Java中goto關鍵字的替代功能是什么?由于Java沒有goto。
查看完整描述

3 回答

?
弒天下

TA貢獻1818條經驗 獲得超8個贊

gotoJava中沒有直接等效的概念。有幾種構造可以讓您完成經典作品可以做的一些事情goto。

  • breakcontinue語句,可以跳出一個塊的循環或switch語句。

  • 帶標簽的語句,break <label>允許您從任意復合語句跳到給定方法(或初始化程序塊)內的任何級別。

  • 如果標記了循環語句,則可以continue <label>從內部循環繼續進行外部循環的下一次迭代。

  • 引發和捕獲異??梢允鼓ㄓ行В┨龇椒ㄕ{用的多個級別。(但是,異常的代價相對較高,被認為是進行“常規”控制流程1的一種不好的方法。)

  • 當然有return。

這些Java構造均不允許您在與當前語句相同的嵌套級別上向后或分支到代碼中的某個點。它們都跳出一個或多個嵌套(作用域)級別,并且所有(除之外continue)都向下跳。此限制有助于避免舊的BASIC,FORTRAN和COBOL代碼2固有的goto“意大利面條代碼”綜合癥。


1-異常中最昂貴的部分是異常對象及其堆棧跟蹤的實際創建。如果確實需要將異常處理用于“常規”流控制,則可以預分配/重用異常對象,或者創建一個覆蓋該fillInStackTrace()方法的自定義異常類。缺點是異常的printStackTrace()方法不會為您提供有用的信息……如果您需要調用它們的話。

2-意大利面條式代碼綜合癥催生了結構化編程方法,您在其中限制了對可用語言結構的使用。這可以應用于BASIC,Fortran和COBOL,但是需要謹慎和紀律。goto完全擺脫掉是一個務實的更好解決方案。如果您以某種語言來保存它,總是會有一些小丑會濫用它。


查看完整回答
1 反對 回復 2019-10-18
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

您可以使用帶標簽的BREAK語句:


search:

    for (i = 0; i < arrayOfInts.length; i++) {

        for (j = 0; j < arrayOfInts[i].length; j++) {

            if (arrayOfInts[i][j] == searchfor) {

                foundIt = true;

                break search;

            }

        }

    }

但是,在正確設計的代碼中,您不需要GOTO功能。


查看完整回答
反對 回復 2019-10-18
  • 3 回答
  • 0 關注
  • 1239 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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