第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在Java中使用'goto'的替代方法

如何在Java中使用'goto'的替代方法

回首憶惘然 2023-05-17 15:52:36
我怎樣才能在 Java 中使用任何替代“goto”的方法?我嘗試使用中斷標(biāo)簽。但是由于我沒(méi)有跳出任何循環(huán),所以它給出了未定義的標(biāo)簽錯(cuò)誤。import java.io.*;class $08_02_Total_Avg_Marks{    public static void main(String args[]) throws IOException    {        //declare and initialize variables        int subNo = 0, totalMarks = 0;        float avg = 0.0F;    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   label1:    System.out.println("Enter no. of subjects");    //check if input is integer    try    {        subNo = Integer.parseInt(br.readLine().trim());    }    catch(NumberFormatException e)    {        System.out.println("Please enter a whole number.");        //goto label1    }    int[] marksArray = new int[subNo];    for(int i=0; i<marksArray.length; i++)    {label2:        System.out.println("Enter marks for subject " + (i+1));        try        {            marksArray[i] = Integer.parseInt(br.readLine().trim());        }        catch(NumberFormatException e)        {            System.out.println("Please enter a whole number.");            //goto label2        }    }}}我正在終止無(wú)效輸入的程序。但是我需要在無(wú)效輸入上執(zhí)行相同的行。
查看完整描述

4 回答

?
斯蒂芬大帝

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

與其明確地轉(zhuǎn)到特定點(diǎn),不如將您可能想要在循環(huán)中重復(fù)的位包裝起來(lái)。如果您不想再次執(zhí)行循環(huán),break.


對(duì)于第一個(gè):


while (true) {

  System.out.println("Enter no. of subjects");


  //check if input is integer

  try

  {

      subNo = Integer.parseInt(br.readLine().trim());

      break;

  }

  catch(NumberFormatException e)

  {

    System.out.println("Please enter a whole number.");

    // Nothing required to continue loop.

  }

}

對(duì)于第二個(gè),將循環(huán)體包裹在循環(huán)中:


for(int i=0; i<marksArray.length; i++)

{

  while (true) {

    System.out.println("Enter marks for subject " + (i+1));

    try

    {

        marksArray[i] = Integer.parseInt(br.readLine().trim());

        break;

    }

    catch(NumberFormatException e)

    {

        System.out.println("Please enter a whole number.");

    }

  }

}

或者,寫(xiě)一個(gè)包裝這個(gè)循環(huán)的方法可能更好:


int getInt(BufferedReader br) throws IOException {

  while (true) {

    try

    {

      return Integer.parseInt(br.readLine().trim());

    } catch(NumberFormatException e) {

      System.out.println("Please enter a whole number.");

    }

  }

}

然后調(diào)用此方法:


System.out.println("Enter no. of subjects");

int subNo = getInt(br);


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

    System.out.println("Enter marks for subject " + (i+1));

    marksArray[i] = getInt(br);

}


查看完整回答
反對(duì) 回復(fù) 2023-05-17
?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊

我已經(jīng)稍微重新格式化了您的代碼。我的基本想法是:所有的 goto 語(yǔ)句都可以寫(xiě)成等價(jià)的循環(huán)。第一個(gè)現(xiàn)在是用一個(gè) while 循環(huán)制作的,它終止了一個(gè)沒(méi)有例外。至于第二個(gè)標(biāo)簽,它是用相同的機(jī)制完成的(所以是一個(gè) while 循環(huán)),但是,標(biāo)簽可以用“break + nameOfYourLable” - 語(yǔ)句退出/終止。


import java.io.*;


class $08_02_Total_Avg_Marks

{

public static void main(String args[]) throws IOException

{

    //declare and initialize variables

    int subNo = 0, totalMarks = 0;

    float avg = 0.0F;



BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   

boolean goToLabel1 = true;

while (goToLabel1) {

System.out.println("Enter no. of subjects");


//check if input is integer

try

{

    subNo = Integer.parseInt(br.readLine().trim());

    goToLabel1 = false;  //parsing succeeded, no need to jump to label1

}

catch(NumberFormatException e)

{

    System.out.println("Please enter a whole number.");

    //goto label1

}

}

int[] marksArray = new int[subNo];


for(int i=0; i<marksArray.length; i++)

{

    label2: while (true) {

    System.out.println("Enter marks for subject " + (i+1));

    try

    {

        marksArray[i] = Integer.parseInt(br.readLine().trim());

        break label2;

    }

    catch(NumberFormatException e)

    {

        System.out.println("Please enter a whole number.");

    }

}

}


}

}


查看完整回答
反對(duì) 回復(fù) 2023-05-17
?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊

此代碼片段將循環(huán)直到插入正確的數(shù)字,在本例中(它解決了您的第一個(gè) goto 問(wèn)題)


BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  

boolean noNumberEntered; //Default on false


System.out.println("Enter no. of subjects");


//TODO: check if input is integer


while(!noNumberEntered){

    try

    {

        subNo = Integer.parseInt(br.readLine().trim());

        noNumberEntered = true;


    }

    catch(NumberFormatException e)

    {

        System.out.println("Please enter a whole number.");

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-05-17
?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以改用do while循環(huán)和布爾值,如下所示:


class $08_02_Total_Avg_Marks

{

    public static void main(String args[]) throws IOException

    {

        //declare and initialize variables

        int subNo = 0, totalMarks = 0;

        float avg = 0.0F;



    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  

    boolean goodEntry = true; 

    do {

        goodEntry = true;

        System.out.println("Enter no. of subjects");


        //check if input is integer

        try

        {

            subNo = Integer.parseInt(br.readLine().trim());

        }

        catch(NumberFormatException e)

        {

            System.out.println("Please enter a whole number.");

            goodEntry = false;

        }

    } while(!goodEntry);

}

你可以對(duì)你的第二個(gè)做同樣的事情goto。有很多方法可以做到這一點(diǎn)(使用while循環(huán)和布爾值,使用breaks...),但循環(huán)比goto.


查看完整回答
反對(duì) 回復(fù) 2023-05-17
  • 4 回答
  • 0 關(guān)注
  • 241 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)