java流程控制-给个一件三连呗!✨✨✨✨✨

2024-01-13 05:04
文章标签 java 流程 控制 一件 三连

本文主要是介绍java流程控制-给个一件三连呗!✨✨✨✨✨,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接下来我们来看流程控制方面的知识
请添加图片描述

文章目录

    • 1.Scanner类的使用
        • 1.1 使用next()进行接收
        • 1.2 nextLine()
        • 1.3 hasNext()
        • 1.4 scanner.nextInt()
    • 2.选择结构
        • 2.1 if...else....语句
        • 2.2 if....else if....else...语句
        • 2.3 switch() case...语句
    • 3.循环结构
        • 3.1for 循环:
        • 3.2while 循环:
        • 3.3 do-while 循环:
        • 3.4 foreach 循环:
    • 4.练习题
        • 4.1 计算0到100的奇数和,偶数和
        • 4.2 用while和for循环输出1-1000之间能被5整除的数,并且,每行4个
        • 4.3 打印九九乘法表
        • goto关键字

1.Scanner类的使用

要使用用户交互的Scanner,我们首先必须导入该类(先试着去敲代码)导入java.util包下的Scanner类,Scanner类是Java标准库中的一个工具类,它提供了一种方便的方式来读取用户从标准输入流(通常是键盘)输入的数据。

import java.util.Scanner;

step1 导入Scanner类:在程序中使用import java.util.Scanner;语句导入Scanner类。
step2 创建Scanner对象:在程序中使用Scanner scanner = new Scanner(System.in);语句创建Scanner对象,其中System.in表示标准输入流。
step3 使用Scanner对象读取数据:使用Scanner对象的next()、nextInt()等方法读取从标准输入流中输入的数据。

1.1 使用next()进行接收
package com.process_control;
import java.util.Scanner;
public class Demo01 {public static void main(String[] args) {//创建一个扫描器对象用于接收键盘数据Scanner scanner=new Scanner(System.in);System.out.println("使用next方式接收:");if(scanner.hasNext()){String str= scanner.next();System.out.println("输出的内容为:"+str);}//凡是IO流的类,如果不关闭会一直占用资源,养成好习惯scanner.close();}
}

在这里插入图片描述

请添加图片描述
啊!为啥输入的Hello world 输出之后变成了Hello?因为
next()是Scanner类中的一个方法,可用于从标准输入流(通常是键盘)获取下一个标记(由空格、制表符或换行符分隔的字符串)。
next()方法会读取输入流中的下一个标记,并返回一个String类型的值。如果输入流中没有下一个标记,则next()方法会等待用户的输入直到有输入为止。
这里遇到下一个标记为空格,于是乎,输出Hello,

1.2 nextLine()

那么,我们需要有这些标记符(空格,制表符)的字符串怎么办了?
答:使用nextLine()方法,实例:

import java.util.Scanner;public class Demo02 {public static void main(String[] args) {System.out.println("haha,接下来使用nextLine()方式:");Scanner scanner=new Scanner(System.in);String str=scanner.nextLine();System.out.println("输出:"+str);}
}
1.3 hasNext()

hasNext()是Scanner类中的一个方法,用于判断输入流中是否还有下一个标记(由空格、制表符或换行符分隔的字符串)。
hasNext()方法返回一个boolean类型的值,如果输入流中有下一个标记,则返回true,否则返回false。
在这里插入图片描述

1.4 scanner.nextInt()

scanner.nextInt()是Java中Scanner类的一个方法,用于从标准输入(通常是键盘)中读取下一个整数。它的语法形式如下:

Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();

首先创建了一个Scanner对象,并将其初始化为System.in,表示从标准输入中读取数据。然后,通过调用nextInt()方法,从标准输入中读取下一个整数,并将其保存在num变量中。
需要注意的是,如果标准输入中没有下一个整数,则nextInt()方法会阻塞程序的执行,直到有新的输入为止。如果输入的数据不是整数,则会抛出InputMismatchException异常。
除了nextInt()方法,Scanner类还提供了其他一些方便的方法,如nextDouble()、nextLine()等,用于读取不同类型的数据。
在这里插入图片描述

2.选择结构

2.1 if…else…语句
if (condition) {// 如果condition为true,则执行这里的代码块
} else {// 如果condition为false,则执行这里的代码块
}

实例

import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入一个整数:");int num = scanner.nextInt();if (num > 0) {System.out.println(num + "是一个正数。");} else {System.out.println(num + "不是一个正数。");}}
}
2.2 if…else if…else…语句
if (condition1) {// 如果condition1为true,则执行这里的代码块
} else if (condition2) {// 如果condition2为true,则执行这里的代码块
} else if(condition3){//如果condition3为true,则执行这里}
else {// 如果上述条件都不成立,则执行这里的代码块
}
2.3 switch() case…语句

switch…case语句是一种多重条件判断语句,用于根据不同的值执行不同的代码块。它的语法形式如下:

switch (expression) {case value1:// 如果expression的值等于value1,则执行这里的代码块break;case value2:// 如果expression的值等于value2,则执行这里的代码块break;...default:// 如果上述所有条件都不成立,则执行这里的代码块break;
}

在switch…case语句中,expression是一个表达式,它的值会与每个case后面的值进行比较。如果匹配到某个case后面的值,则执行对应的代码块。如果没有匹配到任何一个case,则执行default后面的代码块。
需要注意的是,每个case后面必须加上break语句,用于结束switch…case语句。如果没有break语句,则会继续执行下一个case的代码块,直到遇到break或者default为止。

import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入1-7之间的整数:");int num = scanner.nextInt();switch (num) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期日");break;default:System.out.println("输入有误,请重新输入。");}}
}

3.循环结构

3.1for 循环:

for 循环是最常用的循环结构之一,它允许你指定一个初始值、一个条件和一个步进表达式,来控制循环的执行次数。语法如下:

for (初始化; 条件; 步进) {// 循环体代码
}

初始化:在循环开始时执行一次,用于初始化计数器或设置循环变量的初始值。
条件:每次循环开始前检查的条件,如果条件为真,则继续执行循环体;如果条件为假,则退出循环。
步进:在每次循环结束后执行的操作,用于更新计数器或循环变量的值
练习题:
打印如下三角形:

    ****************
*********
public class Day11201 {public static void main(String[] args) {for(int i=1;i<=5;i++){for(int j=4;j>=i;j--){System.out.print(" ");}for(int j=1;j<=i;j++){System.out.print("*");}for(int j=1;j<=i-1;j++){System.out.print("*");}System.out.println();}}
}

step1:根据题意,我们需要打印出具有5行的对称三角形,故外层循环为1-5
step2:内层第一个for循环打印左边的空格,我们在纸上画一下可以发现,空格随着行数的增加数量从4到0依次递减
step3:内层第二个for循环,我们打印的是对称三角形的左边*,我们知道第一行有1个*,第2行2个依次类推,故j<i;
step4:内层第三个for,打印右边的*,因此,我们可以发现右边的*,每次比行数少1.

3.2while 循环:

while 循环会在指定条件为真时重复执行循环体。语法如下:

while (条件) {// 循环体代码
}

条件:在每次循环开始前检查的条件,如果条件为真,则继续执行循环体;如果条件为假,则退出循环。

public class Day11202 {public static void main(String[] args) {int m=0;double sum=0;Scanner scanner=new Scanner(System.in);while(scanner.hasNextDouble()){m+=1;sum+=scanner.nextDouble();}System.out.println("输入有多少个数:"+m);System.out.println("输入数之和为:"+sum);}
}
3.3 do-while 循环:

do-while 循环和 while 循环类似,不同之处在于 do-while 循环会先执行一次循环体,然后检查条件。语法如下:

do {// 循环体代码
} while (条件);

条件:在每次循环结束后检查的条件,如果条件为真,则继续执行循环体;如果条件为假,则退出循环。

3.4 foreach 循环:

foreach 循环用于遍历数组或集合中的元素,无需使用索引。语法如下:

for (元素类型 元素变量 : 数组或集合) {// 循环体代码
}

元素类型:表示数组或集合中元素的类型。
元素变量:表示当前循环迭代的元素。


public class Day11203 {public static void main(String[] args) {int[] arr={1,2,3,4,5};for(int i=0;i<5;i++){System.out.print(arr[i]);}System.out.println();for(int x:arr){System.out.print(x);}System.out.println();}
}

4.练习题

4.1 计算0到100的奇数和,偶数和
public class Day11204 {public static void main(String[] args) {int odd_sum=0;int even_sum=0;for(int i=0;i<100;i++){if(i%2==0){even_sum+=i;}else{odd_sum+=i;}}System.out.println("所有的奇数和为:"+odd_sum);System.out.println("所有的偶数和为:"+even_sum);}
}
所有的奇数和为:2500
所有的偶数和为:2450
4.2 用while和for循环输出1-1000之间能被5整除的数,并且,每行4个
package com.determination;public class Day11205 {public static void main(String[] args) {int flag=0;for(int i=1;i<=1000;i++){if(i%5==0){System.out.print(i+" ");flag++;if(flag%4==0){System.out.println();}}}}
}
4.3 打印九九乘法表
public class Day11206 {public static void main(String[] args) {for(int i=1;i<=9;i++){for(int j=1;j<=i;j++){System.out.print(i+"x"+j+"="+i*j+" ");}System.out.println();}}
}
1x1=1 
2x1=2 2x2=4 
3x1=3 3x2=6 3x3=9 
4x1=4 4x2=8 4x3=12 4x4=16 
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81 
goto关键字

在这里插入图片描述
打印出101-150之间的所有质数

public class Day11207 {public static void main(String[] args) {int count = 0;outer: for(int i=101;i<150;i++){for(int j=2;j<i/2;j++){if(i%j==0){continue outer;}}//打印出101-150之间的所有质数System.out.print(i+" ");}}
}

这篇关于java流程控制-给个一件三连呗!✨✨✨✨✨的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/600325

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听