热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java基础语法:逻辑控制

下面小编就为大家带来一篇Java逻辑控制的基础文章。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一

一、逻辑控制语句

1. 顺序结构

像我们写的代码,执行时会按照从上到下一行一行的执行。这就是顺序结构,不同的顺序,结果可能就不一样。如

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{
    // 条件都不满足时执行的代码
}

但是从形式上我们就可以看出还是有一些不同的

1.条件表达式必须是布尔值,不能像 C 语言一样直接使用一个数值,如

int a = 10;
if(a){
    System.out.println(a);
}

这种代码就是错的,条件必须是布尔值

int a = 10;
if(a > 0){
    System.out.println(a);
}

这种代码就是正确的

2.代码风格问题,比如我写 C 语言时喜欢把一对大括号并列在行首。但是在 java 中更推荐上述三种形式那样的风格,将 { 放在 if 或 else 同一行

3.还要注意悬垂 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. 输出到控制台

1.基本语法

System.out.println(msg);		// 输出一个字符串,自带换行
System.out.print(msg);			// 输出一个字符串,不带换行
System.out.printf(format,msg);	// 格式化输出,括号内内容类似于 C 语言的 printf

2.代码示例

int a = 10;
System.out.println(a);			// 输出 a,自带换行
System.out.print(a);			// 输出 a,不带换行
System.out.printf("%d
",a);	// 格式化输出,括号内内容类似于 C 语言的 printf

3.格式化输出表(随用随查)

转换符 类型 例子 输出结果
d 十进制整数 ("%d",100) 100
x 十六进制整数 ("%x",100) 64
o 八进制整数 ("%o",100) 144
f 定点浮点数 ("%f",100f) 100.000000
e 指数浮点数 ("%e",100f) 1.000000e+02
g 通用浮点数 ("%g",100f) 100.000
a 十六进制浮点数 ("%a",100) 0x1.9p6
s 字符串 ("%s",100) 100
c 字符 ("%d",‘1") 1
b 布尔值 ("%b",100) true
h 散列码 ("%h",100) 64
% 百分号 ("%.2f%%",2/7f) 0.29%

2. 从键盘输入

1.读入一个字符(不推荐使用)

直接使用 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 键就会出现

在这里插入图片描述

再点击第一个或者第二个就不会报错了。这里其实是处理了异常,但是一个简单的读入字符就要这么复杂所以不推荐使用。

2.使用 Scanner 读取字符/字符串/整数/浮点数/布尔值

1.首先需要导入 util 包 import java.util.Scanner; ,在 IDEA 中,其可以通过输入 Scanner 后直接回车快速导入

2.然后再构造一个 Scanner 对象并与”标准输入流“ System.in 关联: Scanner 对象名 = new Scanner(System.in);

3.再就可以通过 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();

来读取掉之前的回车。

3.我们知道在 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 该怎么写呢?

1.首先我们要知道在 Java 中随机数是怎么生成的。

1.首先需要导入 util 包 import java.util.Random; ,在 IDEA 中,其可以通过输入 Random 后直接回车快速导入

2.然后通过 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 

四、总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程笔记的更多内容!


推荐阅读
  • 那你就是学的c语言,跟我学c语言
    本文目录一览:1、如何学习C语言?2、新手如何 ... [详细]
  • 本文小编为大家详细介绍“Java中的逻辑结构模式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中的逻辑结构模式有哪些”文章能帮 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • C++基础 | 从C到C++快速过渡
    一、开发环境c++使用的编译器是g& ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了在Java中gt、gtgt、gtgtgt和lt之间的区别。通过解释符号的含义和使用例子,帮助读者理解这些符号在二进制表示和移位操作中的作用。同时,文章还提到了负数的补码表示和移位操作的限制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • switch分支结构一、程序运行流程的分类1、顺序结构:根据程序顺序依次执行。2、分支结构:根据判断决定程序的执行顺序。3、循环结构。分支结构三要素&# ... [详细]
author-avatar
刘刘刘存乐_626
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有