学习JavaDay06

news/2025/3/9 19:03:57/文章来源:https://www.cnblogs.com/k-1506473569/p/18761185

流程控制

用户交互Scanner

Scanner对象

通过Scanner类来获取用户的输入

Scanner s = new Scanner(System.in);

next():

​ 一定要读取到有效字符后才可以结束输入

​ 对输入有效字符之前遇到的空白,next()方法会自动将其去掉.

​ 只有输入有效字符后才能将其后面输入的空白作为分隔符或者结束符

​ next()不能得到带有空格的字符串

package com.kzh.scanner;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()) {//使用next方式接收String str = scanner.next();//程序会等待用户输入完毕System.out.println("输入的内容为:"+str);}//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉scanner.close();}
}

nextLine():

​ 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。

​ 可以获得空白

package com.kzh.scanner;import java.util.Scanner;public class Demo02 {public static void main(String[] args) {//从键盘接收数据Scanner scanner = new Scanner(System.in);System.out.println("使用nextLine方式接收:");//判断是否还有输入if (scanner.hasNextLine()) {String str = scanner.nextLine();System.out.println("输入的内容为:"+str);}scanner.close();}
}

我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果

package com.kzh.scanner;import java.util.Scanner;public class Demo05 {public static void main(String[] args) {//我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果;Scanner scanner = new Scanner(System.in);//输入的数字个数int n = 0;//数字总和double sum = 0;System.out.println("请输入数据:");//通过循环判断是否还有输入,并对一次输入进行求和与平均数统计while (scanner.hasNextDouble()){double x = scanner.nextDouble();n = n + 1;//n++sum = sum + x;System.out.println("你输入了第"+n+"个数据,当前结果sum="+sum);}System.out.println(n + "个数的和为" + sum);System.out.println(n + "个数的平均数是" + (sum/n));scanner.close();}
}

顺序结构

语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

package com.kzh.struct;public class ShunXuDemo {public static void main(String[] args) {System.out.println("hello1");System.out.println("hello2");System.out.println("hello3");System.out.println("hello4");System.out.println("hello5");}
}

选择结构

if单选择结构

if(布尔表达式){//如果布尔表达式为true将执行的语句
}
package com.kzh.struct;import java.util.Scanner;public class IfDemo01 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入内容:");String s = scanner.nextLine();//equals:判断字符串是否相等if (s.equals("Hello")){System.out.println(s);}System.out.println("End");scanner.close();}
}

if双选择结构

package com.kzh.struct;import java.util.Scanner;public class IfDemo02 {public static void main(String[] args) {//考试分数大于60就是及格,小于60分就不及格Scanner scanner = new Scanner(System.in);System.out.println("请输入成绩: ");int score = scanner.nextInt();if (score>60){System.out.println("及格");}else{System.out.println("不及格");}scanner.close();}
}

if多选择结构

if语句最多有1个else语句,else语句在所有的else if之后
if语句可以有若干个else if语句,它们必须在else语句之前
一旦其中一个else if语句检测为true,其他的else if以及else语句都将跳出执行

package com.kzh.struct;import java.util.Scanner;public class IfDemo03 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入成绩:");int score = scanner.nextInt();/** if语句最多有1个else语句,else语句在所有的else if之后* if语句可以有若干个else if语句,它们必须在else语句之前* 一旦其中一个else if语句检测为true,其他的else if以及else语句都将跳出执行* */if (score == 100) {System.out.println("恭喜满分");} else if (score<100 && score>=90) {System.out.println("A级");}else if (score<90 && score>=80) {System.out.println("B级");}else if (score<80 && score>=70) {System.out.println("C级");}else if (score<70 && score>=60) {System.out.println("D级");}else if (score<60 && score>=0) {System.out.println("不及格");}else {System.out.println("成绩不合法");}scanner.close();}
}

嵌套的if结构

if(布尔表达式1){//如果布尔表达式1的值为true执行代码if(布尔表达式2){//布尔表达式2的值为true执行代码}
}

switch多选择结构

switchy语句中的变量类型可以是:

byte,short,int,char,string

从Java SE 7开始switch支持字符串String类型

同时case标签必须为字符串常量或字面量

循环结构

while循环

while(布尔表达式){//循环内容
}

只要布尔表达式为true,循环就会一直执行下去。

我们需要一个让表达式失效的方式来结束循环

package com.kzh.struct;public class WhileDemo01 {public static void main(String[] args) {//输出1-100int i  = 0;while (i < 100) {i++;System.out.println(i);}}
}

避免死循环

package com.kzh.struct;public class WhileDemo02 {public static void main(String[] args) {//死循环while (true) {//等待客户端连接//定时检查//。。。。。。。。}}
}

计算1+2+3+...+100=?

package com.kzh.struct;public class WhileDemo03 {public static void main(String[] args) {//计算1+2+3+...+100=?int i = 0;int sum = 0;while (i <= 100) {sum = sum + i;i++;}System.out.println(sum);}
}

do...while循环

对于while语句而言,如果不满足条件,则不能进入循环

但有时候我们需要即使不满足条件,也至少执行一次

do...while循环和while循环相似,不同的是,do...while循环至少会执行一次

do{//代码语句
}while(布尔表达式)
package com.kzh.struct;public class DoWhileDemo01 {public static void main(String[] args) {int i = 0;int sum = 0;do {sum = sum + i;i++;}while (i <= 100);System.out.println(sum);}
}

while和do...while的区别:

while先判断后执行,do...while是先执行后判断

do...while总是保证循环体会被至少执行一次

package com.kzh.struct;public class DoWhileDemo02 {public static void main(String[] args) {int a = 0;while (a < 0) {System.out.println(a);a++;}System.out.println("==================");do {System.out.println(a);a++;}while (a < 0);}
}

For循环

for循环,使一些循环结构变得更加简单

for(初始化;布尔表达式;更新){//代码语句
}

关于for循环有以下几点说明:

最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句
然后,检测布尔表达式的值。如果为true,循环体被执行,如果为false,循环终止,开始执行循环体后面的语句
执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)
再次检测布尔表达式,循环执行上面的过程

package com.kzh.struct;public class ForDemo01 {public static void main(String[] args) {int a = 1;//初始化条件while (a<=100){//条件判断System.out.println(a);//循环体a += 2;//迭代}System.out.println("while循环结束");for (int i = 1; i <= 100; i++){System.out.println(i);}System.out.println("for循环结束");}
}

练习1:计算0到100之间的奇数和偶数的和

package com.kzh.struct;public class ForDemo02 {public static void main(String[] args) {//练习1:计算0到100之间的奇数和偶数的和int oddSum = 0;int evenSum = 0;for (int i = 0; i <= 100; i++) {if (i % 2 != 0) {//奇数oddSum += i;//oddSum = oddSum + i}else{evenSum += i;}}System.out.println("奇数的和:"+oddSum);System.out.println("偶数的和:"+evenSum);}
}

练习2:用for或while循环输出1-1000之间能被5整除的数,并且每行输出3个

package com.kzh.struct;public class ForDemo03 {public static void main(String[] args) {//练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个for (int i = 0; i <= 1000; i++) {if (i % 5 == 0) {System.out.print(i+"\t");}if (i % (5 * 3) == 0) {//每行三个System.out.println();
//                System.out.print("\n");}}//println 输出完会换行//print  输出完不会换行}
}
package com.kzh.struct;public class WhileDemo04 {public static void main(String[] args) {
//        用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个int i = 1;//从1开始int count = 0;//计数器,控制每行输出3个数//使用while循环遍历1-1000之间的数while (i <= 1000) {//如果i能被5整除if (i % 5 == 0) {System.out.print(i + "\t");count++;//增加计数器//每行输出3个数if (count == 3){System.out.println();//换行count = 0;//重置计数器}}i++;//增加i 迭代}}
}

练习3;打印九九乘法表

package com.kzh.struct;public class ForDemo04 {public static void main(String[] args) {//练习3;打印九九乘法表for (int j = 1; j <=9; j++) {for (int i = 1; i <= j; i++) {System.out.print(j+"*"+i+"="+(j*i) + "\t");}System.out.println();}//1.我们先打印第一例//2.我们把固定的1再用一个循环包起来//3.去掉重复项,i <= j//4.调整样式}
}

增强for循环

Java5引入了一种主要用于数组或集合的增强型for循环

for(声明语句:表达式){//代码句子
}

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等

表达式:表达式是要访问的数组名,或是返回值为数组的方法

package com.kzh.struct;public class ForDemo05 {public static void main(String[] args) {int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//定义了一个数组for (int i = 0 ;i < 10 ;i++){System.out.println(numbers[i]);}System.out.println("===================");//遍历数组的元素for (int x:numbers ){System.out.println(x);}}
}

break continue

break在任何循环语句的主体部分,均可用break控制循环的流程
break用于强制退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用)

continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定

break

在任何循环语句的主题部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用)

continue

用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896038.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【每日一题】20250309

我所渴望的,不过是过上一种发自本心的生活,为什么竟会如此困难?【每日一题】已知 \(\odot C\) 过点 \(P(1,2)\),与 \(y\) 轴相交于点 \(Q(0,6)\).若过点 \(Q\) 作 \(\odot C\) 的切线 \(l\),其切线 \(l\) 与 \(x\) 轴平行,则 \(l\) 的方程为_________,\(\odot C\) 的标…

FastAPI Cookie 和 Header 参数完全指南:从基础到高级实战

title: FastAPI Cookie 和 Header 参数完全指南:从基础到高级实战 🚀 date: 2025/3/9 updated: 2025/3/9 author: cmdragon excerpt: 本教程深入探讨 FastAPI 中 Cookie 和 Header 参数的读取与设置,涵盖从基础操作到高级用法。通过详细的代码示例、课后测验和常见错误解…

vim按f5运行代码配置

使vim能够像vscode一样按f5运行代码 效果图let g:last_terminal_buf = -1 " 用于存储上一个终端缓冲区编号 function! RunCurrentFile() " 如果存在上次的终端缓冲区,则删除它 if g:last_terminal_buf != -1 && bufexists(g:last_terminal_buf) silent exec…

DeepSeek + Xmind,1分钟自动把pdf/word文档转成思维导图

DeepSeek加Xmind,1分钟把PDF、Word文档转成思维导图!步骤超简单:第一步:打开DeepSeek,点击“深度思考”,上传你的文档。第二步:告诉DeepSeek“帮我转成思维导图,输出Markdown格式”。第三步:复制代码, 保存文件到桌面文本文件中,修改文件后缀为“.md”。第四步:打开…

Windows平台调试器原理与编写05.内存断点

https://www.bpsend.net/thread-274-1-3.html 内存断点访问断点 写入断点内存写入断点简介:当被调试进程访问,读或写指定内存的时候,程序能够断下来。 思考1:要想将一段内存设为内存断点,最终的目的是让其能够抛异常。调试器是基于异常的一个程序。应该如何实现呢?可以通…

Redis--Lesson01--NoSQL简史

单击MySQL的演进 单机MySQL 在早期互联网时代,也就是90年代以前,一个基本的互联网的访问量不会太大,可以说很多国家和地区都还没有配备互联网,所以在这种情况下的互联网格局使用的数据存储格式就是简单的单机模式,即使用一个数据库的如MySQL库就可以满足日常的数据读写 如…

Excel的快捷键

1、填充序号1~1000(删除后,序号会自动更新) (1)首先在左上角的位置框中输入A1:A1000,然后按Enter回车健,即可选中A1到A1000的单元格。(2)然后在函数框中输入=ROW(),按Ctrl + Enter即可,即可填充1-1000。 本文来自博客园,作者:业余砖家,转载请注明原文链接:http…

AutoGLM: Autonomous Foundation Agents for GUIs

AutoGLM: 针对Web和手机,基于ChatGLM,具体细节并不清楚。主要内容 提出AUTOGLM,集成了一套全面的技术和基础设施,以创建适合用户交付的可部署代理系统。首先,为GUI控制设计合适的"intermediate interface"是至关重要的,可以实现规划和定位的分离。其次,开发了…

Vulnhub-election靶机

总结:本靶机给了很多目录,对于信息收集考察的比较严格,给了一个数据库,很多时候容易陷进去,拿到用户权限登录后,也需要大量的信息收集,虽然可以在数据库里找到root和密码,但是不是靶机本身的,最终利用suid发现可疑目录,查找日志后利用脚本提权一、靶机搭建 选择扫描虚…

[HDCTF 2023]double_code _wp

其实这道题的加密函数我是手翻出来的,但是做完之后了解到这是一个sheelcode 实际上就是跑病毒的代码 WriteProcessMemory 用于向指定进程中写入数据,写入一个缓冲区中的数据到另一个进程指定的内存地址中。 函数接受的参数包括要写入的进程句柄,要写入的内存地址,要写入的…

VisionPro添加显示标签(二维码)简单版

!!!——!!! 咱们先展示效果,这个显示的是二维码的信息1.首先呢,你先添加工具 CogIDTool ,工具里我是这么设置的,如果你自己添加的码跟我的不一样,左边几个都运行看看2.现在可以添加脚本了,我接触的都是第二个C#高级脚本,下边是C#高级脚本演示 1)先创建 1个标签2)…

初步学习Android studio

下载安装了Android studio,并在其中下载好了gradle,在模拟手机中实现helloworld