自学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 总结
不会一定要问,虽然不一定是度娘。
Java中(其他语言也差不多吧)的goto语句可以用循环代替,仔细思考其中的逻辑,其实就是:输入错误重新输入,重在一个重新的重,再跟循环的逻辑比对一下,循环不就是重复嘛。想通了。
不会的还是要多尝试
本人是初学者,最后代码虽然说是优化,但应该还有改进的地方
以上内容纯手打,码字不易,如需转载请声明出处,谢谢!
作者:LouisHaoL