在java中goto是意思,关于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 总结
不会一定要问,虽然不一定是度娘。
Java中(其他语言也差不多吧)的goto语句可以用循环代替,仔细思考其中的逻辑,其实就是:输入错误重新输入,重在一个重新的重,再跟循环的逻辑比对一下,循环不就是重复嘛。想通了。
不会的还是要多尝试
本人是初学者,最后代码虽然说是优化,但应该还有改进的地方
以上内容纯手打,码字不易,如需转载请声明出处,谢谢!
作者:LouisHaoL
在java中goto是意思,关于Java中的goto语句相关推荐
- java 绑定微信号开发_Java开发中的常见危险信号
java 绑定微信号开发 在开发,阅读,复审和维护成千上万行Java代码的几年中,我已经习惯于看到Java代码中的某些" 危险信号 ",这些信号通常(但可能并非总是)暗示着代码有问 ...
- 在Java中如何从一个多层嵌套循环中直接跳出?
一.问题描述 最近发现一个有趣的问题,在Java中如何从一个多层嵌套循环中退出呢? 例如下面,有两层循环,break只能退出第一个for循环,不能直接跳出第二个for循环外面. public stat ...
- Java单点登录在校园身份管理系统中的实现
java单点登录在校园身份管理系统中的实现 摘要: 一个学校或企业的内部有很多信息系统,用户登录这些系统时需要进行身份认证.传统的认证机制是基于用户名和密码的,每一个系统都建立有自己的用户信息数据库, ...
- java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
- java中separator_java - File.separator和路径中的斜杠之间的区别
java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...
- java的对象是什么意思_Java中对象和对象引用的区别,引用、指向是什么意思
Java的变量分为两大类:基本数据类型和引用数据类型. 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量 ...
- java gettext_JAVA中getText()怎么从一个JTextArea中读出内容?
想先创建一个JTextArea,然后在里面输入内容(几个字母),然后用getText读出里面的内容,可是好像只能是先在JTextArea里面写,然后getText才能读出,而不能先运行,在图形界面的J ...
- c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法
c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...
- java 线程组作用_浅析Java中线程组(ThreadGroup类)
一.概念 Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理.可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线 ...
- java删除jtable一行的值_JTable中删除一行数据
Jtable中删除一行数据: import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; i ...
最新文章
- 网页打印问题,打印设置,打印预览,打印分页,纵打,横打及页面的边距
- 【实战】用机器学习来提升你的用户增长
- 博客开源系统(待续......)
- MySQL 5.7.18 zip 文件安装过程
- azkaban 与 java任务_azkaban任务报错java.lang.RuntimeException: The root scratch dir: /tmp/hive...
- windows系统下的云服务器部署tomcat
- 常用excel函数 vlookup,concatenate, 的使用
- Laravel 深入核心系列教程
- 使用C#调用外部序或是执行DOS命令
- CentOS 6.7 x64 使用pptpd搭建***服务器
- 使用定位技术,边界判断要谨慎
- Laravel 使用百度地图实现地理位置转经纬度
- 触发器的三种触发方式:电平触发、边沿触发、脉冲触发区别
- AndroidTV获取U盘路径
- 18款室内设计风格,总有一款适合你。
- 使用reduce实现数组扁平化
- 解决谷歌浏览器启动页面默认是搜狗浏览?
- C语言中fscanf函数
- python strip()方法使用
- fdasfasfasfsafsadfadgggdddddddddddddddddfdssssssssssssssssssssssssssssssssssssssssssssssssssssssssss