关于Java中的goto语句

自学Java遇到的问题1

  • goto语句的问题
    • 1.1 背景
    • 2.1 尝试
    • 3.1 总结

goto语句的问题

今天是我自学Java第4天,开始写博客记录学习中遇到的问题。给后来者一些借鉴,也给自己以后回过来在看这些问题提供资料。

1.1 背景

我是先自学过一段时间C++,然后隔了很长一段时间没碰代码,重新学的Java,最近学到if语句的时候,想实现一个“输入错误,重新输入!”的功能,首先想到了标签功能。因为在C语言体系中,可以用goto语句来实现的。然后我在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;
		}
	}
}

编译结果

IfTest03.java:24: 错误: 非法的表达式开始
                        goto lable1;
                        ^
IfTest03.java:24: 错误: 不是语句
                        goto lable1;
                             ^
2 个错误
## 2.2 尝试 本着不会就问度娘的原则,百度了一番,发现在Java语言中,goto是一个保留的关键字,但是不能用,也没有作用。后来看到一种说法是可以和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); ``` 编译运行结果不理想,输入1可以,输入2逻辑出问题,但是后面的逻辑没问题。 >请输入外面的天气 1雨天 2晴天:2 天气输入出错,请重新输入! 请输入您的性别 1男生 2女生:

请输入外面的天气 1雨天 2晴天:3 //这边考虑是执行了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);
运行结果: >请输入外面的天气 1雨天 2晴天:3 天气输入出错,请重新输入! 请输入外面的天气 1雨天 2晴天:2 请输入您的性别 1男生 2女生:1 ## 2.3 优化 百度的过程中,发现其实可以直接用循环就可以了,也不用标签什么的,麻烦! 最后的代码如下: ```javascript //输入天气 while(true){ System.out.print("请输入外面的天气 1雨天 2晴天:"); weather = in.nextInt(); if (weather != 1 && weather != 2){ System.out.println("天气输入出错,请重新输入!"); }else{ break; } } ```

3.1 总结

  1. 不会一定要问,虽然不一定是度娘。
  2. Java中(其他语言也差不多吧)的goto语句可以用循环代替,仔细思考其中的逻辑,其实就是:输入错误重新输入,重在一个重新的重,再跟循环的逻辑比对一下,循环不就是重复嘛。想通了。
  3. 不会的还是要多尝试
  4. 本人是初学者,最后代码虽然说是优化,但应该还有改进的地方

以上内容纯手打,码字不易,如需转载请声明出处,谢谢!
作者:LouisHaoL

你可能感兴趣的:(自学Java,java,goto,循环,小白)