Java 基础语法中的逻辑控制
作者:吞吞吐吐大魔王 发布时间:2022-11-22 16:30:59
目录
Java 基础语法中的逻辑控制
一、逻辑控制语句
1. 顺序结构
2. 分支结构
3. 循环结构
二、输入输出方式
1. 输出到控制台
2. 从键盘输入
三、猜数字游戏
四、总结
Java 基础语法中的逻辑控制
一、逻辑控制语句
1. 顺序结构
像我们写的代码,执行时会按照从上到下一行一行的执行。这z就是顺序结构,不同的顺序,结果可能就不一样。如
System.out.println(1)
System.out.println(2)
System.out.println(3)
该代码结果为 1(换行)2(换行)3,但是如果把顺序改变结果就变了
System.out.println(2)
System.out.println(3)
System.out.println(1)
该代码结果就变为 2(换行)3(换行)1
2. 分支结构
2.1 if 语句
和 C 语言一样,在 Java 中 if 语句也有三种基本的形式
形式一
if(布尔表达式){
// 条件满足时执行的代码
}形式二
if(布尔表达式){
// 条件满足时执行的代码
}else{
// 条件不满足时执行的代码
}形式三
if(布尔表达式1){
// 条件1满足时执行的代码
}else if(布尔表达式2){
// 条件2满足时执行的代码
}else{
// 条件都不满足时执行的代码
}
但是从形式上我们就可以看出还是有一些不同的
条件表达式必须是布尔值,不能像 C 语言一样直接使用一个数值,
如:
int a = 10;
if(a){
System.out.println(a);
}这种代码就是错的,条件必须是布尔值
int a = 10;
if(a > 0){
System.out.println(a);
}
这种代码就是正确的
代码风格问题,比如我写 C 语言时喜欢把一对大括号并列在行首。但是在 java 中更推荐上述三种形式那样的风格,将 { 放在 if 或 else 同一行
还要注意悬垂 else 问题,记住 else 是与 最接近的 if 匹配。
如:
int a = 2;
if(a>0)
if(a>10)
System.out.println("a > 10");
else
System.out.println("a > 0 && a <= 10");我们要知道,最下面的 else 是与与它最近的 if 匹配的
2.2 switch 语句
Java 中的 switch 语句和 C 语言中的几乎一样,大家如果不太熟悉 switch 以及该章所讲解的一些逻辑结构可以去看看我写的 C语言三大语句注意事项
。但是既然不是完全一样,那哪里有区别呢?
在 Java 中,switch(表达式) 中的表达式是有类型限制的。
它只能使用:整数(只包括 byte、short、int)、字符(char)、字符串(String)、枚举类型
3. 循环结构
3.1 while 循环
舒服,Java 的 while 循环和 C 语言也是极其类似,只有一个小的差异
while (表达式) 中的表达式必须是布尔值
3.2 break
break 的功能是:让最靠近包裹它的整个循环提前结束。这也是和 C 语言是一样的
3.3 continue
continue 的功能是:跳过本次循环,立即进入下次循环。这也是和 C 语言是一样的
3.4 for 循环
Java 中的 for 循环和 C 语言中的也很类似,只有一个差异
for(表达式1;表达式2;表达式3) 中的表达式2是循环的判断条件,要使用布尔值
3.5 do while 循环
Java 中的 do while 循环也是和 C 语言很类似,只有一个差异
while 中的循环条件只能是布尔值
但是一般不推荐使用,因为它至少会执行一次循环,不注意可能会犯错
二、输入输出方式
1. 输出到控制台
基本语法:
System.out.println(msg); // 输出一个字符串,自带换行
System.out.print(msg); // 输出一个字符串,不带换行
System.out.printf(format,msg); // 格式化输出,括号内内容类似于 C 语言的 printf
代码示例
int a = 10;
System.out.println(a); // 输出 a,自带换行
System.out.print(a); // 输出 a,不带换行
System.out.printf("%d\n",a); // 格式化输出,括号内内容类似于 C 语言的 printf
格式化输出表(随用随查)
2. 从键盘输入
读入一个字符(不推荐使用)
直接使用
System.in.read()
可以读入一个字符,但是需要搭配异常处理。如果不搭配异常,如下面代码就会编译出错
public static void main(String[] args) {
System.out.print("Enter a char:");
char i = (char)System.in.read();
System.out.println("The char is :" + i);
}我们需要将鼠标放到 read 上面,再按住
Alt + Enter
键就会出现
再点击第一个或者第二个就不会报错了。这里其实是处理了异常,但是一个简单的读入字符就要这么复杂所以不推荐使用。
使用 Scanner 读取字符/字符串/整数/浮点数/布尔值
首先需要导入 util 包
import java.util.Scanner
; ,在 IDEA 中,其可以通过输入 Scanner 后直接回车快速导入然后再构造一个 Scanner 对象并与”标准输入流“ System.in 关联:
Scanner 对象名 = new Scanner(System.in);
再就可以通过 Scanner 类的各种方法实现输入操作了
import java.util.Scanner;
public class TestDemo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt(); //读入一个整数
double b = in.nextDouble(); //读入一个浮点数
boolean c = in.nextBoolean(); //读入一个布尔值
String s = in.next(); //读入一个字符串
}
}但是要注意,上述读入字符串是按空白符当作分隔符的,故只能读入第一个空格之前的字符。如果想要读取该行的所有字符(包含空格),应该使用
String s = in.nextLine();但是使用这个方法还是有很大的缺陷,如果这行代码上面还有其他读入的语句,可能这行代码就不会实行。因为上一行的回车可能被它读入,直接这行结束。因此,只能将其放在读入代码的第一个或者在它前面加一个
in.nextLine();来读取掉之前的回车。
我们知道在 C 语言中可以写类似于这样的代码输入多组数据
int a;
while(scanf("%d",&a) != EOF)
{
// 内容
}
在 C++ 中我们也可以写类似于这样的代码输入多组数据
int a;
while(cin>>a)
{
// 内容
}
那么在 Java 中怎么做呢?代码如下
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int a = in.nextInt();
// 内容
}
并且在 IDEA 上我们可以手动输入 Ctrl + D
结束,在 Windows 的 cmd 上 我们手动输入 Ctrl + Z
结束,在 Linux 或 Mac 上,输入 Ctrl + D
结束
三、猜数字游戏
学 C 语言的时候我们可能都接触过随机数的生成,或者直接写一个猜随机数的游戏。那么使用 Java 该怎么写呢?
首先我们要知道在 Java 中随机数是怎么生成的。
首先需要导入 util 包
import java.util.Random;
,在 IDEA 中,其可以通过输入 Random 后直接回车快速导入然后通过 Random 类中的方法生成我们想要的,
如:
import java.util.Random;
public class TestDemo {
public static void main(String[] args) {
Random random = new random(); // 默认随机种子是系统时间
int rand = random.nextInt(bound:100) + 1;
// random.nextInt(bound:100) 是生成[0,100)间的随机整数
}
}
接下来就是很简单了,只要我们输入的数字与随机数字进行一下比较。直到判断正确再退出就可。
故最终的代码是
public class TestDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int rand = random.nextInt(100) + 1;
while (true){
System.out.print("请输入你所猜测的数字:");
int num = scanner.nextInt();
if(num == rand){
System.out.println("恭喜你,猜对了!");
break;
}else if(num < rand){
System.out.println("很遗憾,你猜的数字小了!");
}else{
System.out.println("很遗憾,你猜的数字大了!");
}
}
}
}
四、总结
这章讲了 Java 的逻辑控制结构,包含了顺序结构、顺序结构和分支结构。还讲了 Java 的输入输出方式。并在最后用 Java 程序写了一个简单的猜数字游戏。我们可以发现,很多都是和 C 语言类似的,这也降低了我们学习的难度。
来源:https://blog.csdn.net/weixin_51367845/article/details/119581808


猜你喜欢
- 编程是一门艺术,大批量的改动显然是非常丑陋的做法,用心的琢磨写的代码让它变的更美观。在有些情况下,一个客户不能或者不想直接访问另一个对象,这
- java对象拷贝详解及实例Java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的:@Testpublic
- TTL简介TTL 是什么呢?TTL 是 RabbitMQ 中一个消息或者队列的属性,表明一条消息或者该队列中的所有消息的最大存活时间,单位是
- C#让winform程序中的输入文本框保留上次的输入选中TextBox控件,在属性窗格中找到(ApplicationSettings),然后
- 一、连接客户端原理流程图二、功能要求1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中;2) 客户端要发给服务器的数据,
- 目录前言Hello World1.可以在 Spring Initializr上面添加,也可以手动在 pom.xml中添加如下代码∶2. 编写
- 原因分析使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码其实乱码问题出现的原因,就是由于默认的tomcat
- SpringBoot底层的一个功能 : @ConfigurationProperties@ConfigurationProperties 配
- java多线程的同步方法实例代码先看一个段有关银行存钱的代码:class Bank { private int su
- 委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在
- 在实际的项目开发中会有很多的对象,如何高效、方便地管理对象,成为影响程序性能与可维护性的重要环节。Java 提供了集合框架来解决此类问题,线
- ObjectUtils.isEmpty()和null区别分配内存和赋值的区别isEmpty():判断值是否为空,即使已经分配内存,但没有赋值
- 枚举的定义1.题目枚举是JAVA 5.0后增加的一个重要类型。可以用来表示一组取值范围固定的变量。使用enum关键字,可以定义枚举类型。实现
- IComparable<T>.NET 里,IComparable<T>是用来作比较的最常用接口。如果某个类型的实例需
- 本文所述为基于C#实现的端口扫描器代码,代码内包括了窗体和逻辑处理两部分代码。在代码中,创建TcpClient对象,把TcpClient用于
- Android中ImageView的使用:点击按钮,改变图片透明度,切换图片布局是三个按钮组件和一个ImageView组件<?xml
- 背景之前我不想用注解来写启动框架,因为启动框架需要的参数太多了。将参数都定义在注解内和写一个task就没有本质上的差别,所以一直觉得没必要用
- 本文实例讲述了Java线程同步方法。分享给大家供大家参考,具体如下:1. Semaphore1.1 二进制SemaphoreSemaphor
- Android中广播(BroadcastReceiver)的详细讲解.1. BroadcastReceiver的注册过程: (1).广播消息
- 1.前言NameServer主要作用是为消息消费者和消息生产者提供关于主题Topic的路由信息,那么NameServer需要存储路由的基本信