自学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语句相关推荐

  1. java 绑定微信号开发_Java开发中的常见危险信号

    java 绑定微信号开发 在开发,阅读,复审和维护成千上万行Java代码的几年中,我已经习惯于看到Java代码中的某些" 危险信号 ",这些信号通常(但可能并非总是)暗示着代码有问 ...

  2. 在Java中如何从一个多层嵌套循环中直接跳出?

    一.问题描述 最近发现一个有趣的问题,在Java中如何从一个多层嵌套循环中退出呢? 例如下面,有两层循环,break只能退出第一个for循环,不能直接跳出第二个for循环外面. public stat ...

  3. Java单点登录在校园身份管理系统中的实现

    java单点登录在校园身份管理系统中的实现 摘要: 一个学校或企业的内部有很多信息系统,用户登录这些系统时需要进行身份认证.传统的认证机制是基于用户名和密码的,每一个系统都建立有自己的用户信息数据库, ...

  4. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

  5. java中separator_java - File.separator和路径中的斜杠之间的区别

    java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...

  6. java的对象是什么意思_Java中对象和对象引用的区别,引用、指向是什么意思

    Java的变量分为两大类:基本数据类型和引用数据类型. 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量 ...

  7. java gettext_JAVA中getText()怎么从一个JTextArea中读出内容?

    想先创建一个JTextArea,然后在里面输入内容(几个字母),然后用getText读出里面的内容,可是好像只能是先在JTextArea里面写,然后getText才能读出,而不能先运行,在图形界面的J ...

  8. c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法

    c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...

  9. java 线程组作用_浅析Java中线程组(ThreadGroup类)

    一.概念 Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理.可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线 ...

  10. java删除jtable一行的值_JTable中删除一行数据

    Jtable中删除一行数据: import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; i ...

最新文章

  1. 网页打印问题,打印设置,打印预览,打印分页,纵打,横打及页面的边距
  2. 【实战】用机器学习来提升你的用户增长
  3. 博客开源系统(待续......)
  4. MySQL 5.7.18 zip 文件安装过程
  5. azkaban 与 java任务_azkaban任务报错java.lang.RuntimeException: The root scratch dir: /tmp/hive...
  6. windows系统下的云服务器部署tomcat
  7. 常用excel函数 vlookup,concatenate, 的使用
  8. Laravel 深入核心系列教程
  9. 使用C#调用外部序或是执行DOS命令
  10. CentOS 6.7 x64 使用pptpd搭建***服务器
  11. 使用定位技术,边界判断要谨慎
  12. Laravel 使用百度地图实现地理位置转经纬度
  13. 触发器的三种触发方式:电平触发、边沿触发、脉冲触发区别
  14. AndroidTV获取U盘路径
  15. 18款室内设计风格,总有一款适合你。
  16. 使用reduce实现数组扁平化
  17. 解决谷歌浏览器启动页面默认是搜狗浏览?
  18. C语言中fscanf函数
  19. python strip()方法使用
  20. fdasfasfasfsafsadfadgggdddddddddddddddddfdssssssssssssssssssssssssssssssssssssssssssssssssssssssssss

热门文章

  1. 为什么只推荐入主流版本华强北耳机?
  2. Ant Design Pro 登录超时处理
  3. 使用spring ResponseEntity处理http响应
  4. 1010 一元多项式求导 (25分)
  5. 【常见笔试面试算法题12续集六】动态规划算法案例分析6 最优编辑练习题
  6. 推荐几个.NET开源图表组件 [转]
  7. win7NVIDIA显卡驱动升级时卡住
  8. python之各种装饰器的使用
  9. python学习笔记(十 三)、网络编程
  10. [转帖]什么是α射线、β射线、γ射线