在java中goto是意思,关于Java中的goto语句
自學(xué)Java遇到的問題1
goto語句的問題
1.1 背景
2.1 嘗試
3.1 總結(jié)
goto語句的問題
今天是我自學(xué)Java第4天,開始寫博客記錄學(xué)習(xí)中遇到的問題。給后來者一些借鑒,也給自己以后回過來在看這些問題提供資料。
1.1 背景
我是先自學(xué)過一段時間C++,然后隔了很長一段時間沒碰代碼,重新學(xué)的Java,最近學(xué)到if語句的時候,想實現(xiàn)一個“輸入錯誤,重新輸入!”的功能,首先想到了標(biāo)簽功能。因為在C語言體系中,可以用goto語句來實現(xiàn)的。然后我在Java中嘗試了一下。
2.1 嘗試
就上面的問題,我嘗試了一下,代碼如下:
import java.util.*;
public class IfTest03{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int weather = 0;
//輸入天氣
lable1:
System.out.print("請輸入外面的天氣 1雨天 2晴天:");
weather = in.nextInt();
if (weather != 1 && weather != 2){
System.out.println("天氣輸入出錯,請重新輸入!");
goto lable1;
}
}
}
編譯結(jié)果
IfTest03.java:24: 錯誤: 非法的表達(dá)式開始
goto lable1;
^
IfTest03.java:24: 錯誤: 不是語句
goto lable1;
^
2 個錯誤 ## 2.2 嘗試 本著不會就問度娘的原則,百度了一番,發(fā)現(xiàn)在Java語言中,goto是一個保留的關(guān)鍵字,但是不能用,也沒有作用。后來看到一種說法是可以和break/continue一起使用,嘗試了一下: ```javascript lable1: do { System.out.print("請輸入外面的天氣 1雨天 2晴天:"); weather = in.nextInt(); if (weather != 1 & weather != 2){ System.out.println("天氣輸入出錯,請重新輸入!"); break lable1; }else{ break; } }while (true); ``` 編譯運行結(jié)果不理想,輸入1可以,輸入2邏輯出問題,但是后面的邏輯沒問題。 >請輸入外面的天氣 1雨天 2晴天:2 天氣輸入出錯,請重新輸入! 請輸入您的性別 1男生 2女生:
請輸入外面的天氣 1雨天 2晴天:3 //這邊考慮是執(zhí)行了break,直接跳過了。
天氣輸入出錯,請重新輸入!
請輸入您的性別 1男生 2女生:
把“break lable1;”改成“continue lable1;”邏輯就通暢了。
//輸入天氣
lable1:
do {
System.out.print("請輸入外面的天氣 1雨天 2晴天:");
weather = in.nextInt();
if (weather != 1 & weather != 2){
System.out.println("天氣輸入出錯,請重新輸入!");
continue lable1;
}else{
break;
}
}while (true); 運行結(jié)果: >請輸入外面的天氣 1雨天 2晴天:3 天氣輸入出錯,請重新輸入! 請輸入外面的天氣 1雨天 2晴天:2 請輸入您的性別 1男生 2女生:1 ## 2.3 優(yōu)化 百度的過程中,發(fā)現(xiàn)其實可以直接用循環(huán)就可以了,也不用標(biāo)簽什么的,麻煩! 最后的代碼如下: ```javascript //輸入天氣 while(true){ System.out.print("請輸入外面的天氣 1雨天 2晴天:"); weather = in.nextInt(); if (weather != 1 && weather != 2){ System.out.println("天氣輸入出錯,請重新輸入!"); }else{ break; } } ```
3.1 總結(jié)
不會一定要問,雖然不一定是度娘。
Java中(其他語言也差不多吧)的goto語句可以用循環(huán)代替,仔細(xì)思考其中的邏輯,其實就是:輸入錯誤重新輸入,重在一個重新的重,再跟循環(huán)的邏輯比對一下,循環(huán)不就是重復(fù)嘛。想通了。
不會的還是要多嘗試
本人是初學(xué)者,最后代碼雖然說是優(yōu)化,但應(yīng)該還有改進(jìn)的地方
以上內(nèi)容純手打,碼字不易,如需轉(zhuǎn)載請聲明出處,謝謝!
作者:LouisHaoL
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的在java中goto是意思,关于Java中的goto语句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CommonJS,AMD,CMD区别 -
- 下一篇: 小数形式与科学计数法转换c语言,BUAA